はじめに
pyenv venv pip をひとまとめにして高速と噂の uv を使ってみます。
Rust で実装されているようです。
https://docs.astral.sh/uv/
環境は Widowns 11 + WSL2 + Ubuntu 24.04 です。
uv という名前の由来はたびたび話題になっているようでした。
uv のインストール
https://docs.astral.sh/uv/getting-started/installation/ を参考にインストールします。
curl -LsSf https://astral.sh/uv/install.sh | sh
バージョンは以下です。
$ uv --version uv 0.7.3
uv は ${HOME}/.local/bin/uv にインストールされるため、必要に応じて PATH を通します。
Python のインストール
uv は pyenv のように複数バージョンの Python をインストールできます。
https://docs.astral.sh/uv/getting-started/features/#python-versions
uv python list でインストール済み、及びインストール可能な Python のバージョンを確認できます。
cpython-3.14.0a6-linux-x86_64-gnu <download available>
cpython-3.14.0a6+freethreaded-linux-x86_64-gnu <download available>
cpython-3.13.3-linux-x86_64-gnu ${HOME}/.local/share/uv/python/cpython-3.13.3-linux-x86_64-gnu/bin/python3.13
cpython-3.13.3+freethreaded-linux-x86_64-gnu <download available>
cpython-3.12.10-linux-x86_64-gnu <download available>
cpython-3.12.3-linux-x86_64-gnu /usr/bin/python3.12
cpython-3.12.3-linux-x86_64-gnu /usr/bin/python3 -> python3.12
cpython-3.11.12-linux-x86_64-gnu <download available>
cpython-3.10.17-linux-x86_64-gnu <download available>
cpython-3.9.22-linux-x86_64-gnu <download available>
cpython-3.8.20-linux-x86_64-gnu <download available>
pypy-3.11.11-linux-x86_64-gnu <download available>
pypy-3.10.16-linux-x86_64-gnu <download available>
pypy-3.9.19-linux-x86_64-gnu <download available>
pypy-3.8.16-linux-x86_64-gnu <download available>
graalpy-3.11.0-linux-x86_64-gnu <download available>
graalpy-3.10.0-linux-x86_64-gnu <download available>
graalpy-3.8.5-linux-x86_64-gnu <download available>
3.12.10 をインストールしたければ uv python install cpython-3.14.0a6-linux-x86_64-gnu でインストールします。
$ uv python install cpython-3.14.0a6-linux-x86_64-gnu Installed Python 3.14.0a6 in 2.56s + cpython-3.14.0a6-linux-x86_64-gnu
venv の作成
uv で venv を作成するには uv venv コマンドを使います。
https://docs.astral.sh/uv/pip/environments/
例えば test-3.12 という名前の venv を作成するには以下のようにします。
uv venv test-3.12 --python cpython-3.12.3-linux-x86_64-gnu
指定する Python のバージョンは uv python list で確認したものを指定すると確実そうですが、単に 3.12 でも機能します。
Current Directory に 3.12 のためのディレクトリが作成されます。
Using CPython 3.12.3 interpreter at: /usr/bin/python3.12 Creating virtual environment at: test-3.12 Activate with: source test-3.12/bin/activate
仮想環境を有効化するには source test-3.12/bin/activate を実行します。
次はこの仮想環境にパッケージをインストールします。
パッケージのインストール
uv でパッケージをインストールするには uv pip コマンドを使います。
$ uv pip install pandas Using Python 3.12.3 environment at: test-3.12 Resolved 6 packages in 138ms Prepared 4 packages in 675ms Installed 6 packages in 23ms + numpy==2.2.5 + pandas==2.2.3 + python-dateutil==2.9.0.post0 + pytz==2025.2 + six==1.17.0 + tzdata==2025.2
list でインストール済みのパッケージを確認できます。
$ uv pip list Using Python 3.12.3 environment at: test-3.12 Package Version --------------- ----------- numpy 2.2.5 pandas 2.2.3 python-dateutil 2.9.0.post0 pytz 2025.2 six 1.17.0 tzdata 2025.2
requirements.txt からインストールすることもできます。
$ cat requirements.txt boto3 requests click $ uv pip install -r requirements.txt Using Python 3.12.3 environment at: Resolved 12 packages in 92ms Prepared 4 packages in 38ms Installed 10 packages in 82ms + boto3==1.38.15 + botocore==1.38.15 + certifi==2025.4.26 + charset-normalizer==3.4.2 + click==8.2.0 + idna==3.10 + jmespath==1.0.1 + requests==2.32.3 + s3transfer==0.12.0 + urllib3==2.4.0
インストールしたパッケージは test-3.12/lib/python3.12/site-packages に格納されます。
所感
Python の開発に欠かせないツールがまとめられており、かつ高速に動作するため、自分は乗り換えることを決めました。
pyenv + pip + venv の組み合わせよりも、uv の方が圧倒的に速いと感じます。