uvとRuffで爆速Python生活

2024-12-26

やること

  • 爆速で開発環境を整えてくれる uv と
  • 爆速で Linting を行ってくれる Ruff を
  • WSL に導入して VScode 系エディタで快適に開発できるようにする

前提環境

  • WSL
  • Ubuntu
  • Windows11
  • Cursor

Uv

Is 何

GitHub - astral-sh/uv: An extremely fast Python package and project manager, written in Rust.

なんか早いパッケージマネージャー兼プロジェクトマネージャーと聞いています。
Rust で書かれていて、早くて楽とのこと。

🚀 A single tool to replace pip, pip-tools, pipx, poetry, pyenv, twine, virtualenv, and more.

いくつか聞いたことあったり使ったことあるツールが入ってますね、
Poetry はよく使っています。

ということで、Poetry の代わりに使っちゃおうぜってことで導入していきます。

導入

WSL なので curl コマンドで導入します。

curl -LsSf https://astral.sh/uv/install.sh | sh

インストールが終わるとパスに入れてくれって言われるので、
任意のシェルの構成ファイルに追記します。
zsh なら .zshrc ですね。

追記てターミナルを再起動すると、
uv コマンドが使えるようになってると思うので、
チェックがてら uv をアップデートしておきます。

uv self update

プロジェクトの作成

直感的に init とパスを指定してあげると簡単にプロジェクトが作れます。
パスを指定しないとカレントディレクトリがプロジェクト化するので注意。

uv init <path>

init したらば、プロジェクトを開くと、venv が見当たらないので早速 venv を構築しましょう。
python -m venv…なんて使わなくても uv に搭載されているのでこれを使います。

uv venv

これ、実行した瞬間に処理が終了して吹き出しました。
それくらい爆速で環境が作られます。

パッケージ導入の前に

tqdm とか色々パッケージを入れたいところですが、
その前に今回 uv といっしょに使う Ruff について説明します。

Ruff

Is 何

Ruff, an extremely fast Python linter | Astral

簡単に行ってしまうと、コードを解析して。修正したりしてくれるやつです。
Black とかそういうタイプの。
これも uv 同様に爆速で動くそうです。

これを uv に導入して、エディターで快適に使えるように仕込んでいきます。

エディターに拡張を導入

Ruff - Visual Studio Marketplace

上記リンク、もしくは vscode 系エディターから ruff と検索するなりしてインストールします。

UV 第二部

パッケージのインストール

uv では 3 通りの方法でパッケージをインストールすることができます。
厳密には、pyproject.toml に依存関係を追加するイメージです。

  • 開発時のみ使うパッケージ (開発用)
  • 制約のないパッケージ (通常)
    ※括弧内は今後の略称です

開発環境に制約をかけるタイプ

Ruff は開発でしか使わないパッケージのため、これ用に入れていきます。
pip などは使わずに、ちゃんと用意されているのでこれを使います。

uv add --dev ruff

CLI ツールを導入するタイプ

CLI ツールを開発時に使用したい場合は、

uv tool install

のようにします。
また、一時的に CLI 使いたいぜって場合は、
面白いことに一時的に使えるコマンドがあるのでこれも覚えておきましょう。

uvx <package>
uvx --from <package> <packageの中身> # パッケージ名と異なる場合
uvx <package>@<version> # バージョン指定
uvx --with <package> <clitool>  # プラグインが必要な場合

通常パッケージの導入

普通に入れたい場合は普通に add で入れれます。

uv add tqdm

実行する

VScode で実行する場合は通常のデバッグ構成で大丈夫です。

参考