uvによるPython管理
uvとは
uvは、2024年2月に登場したRust言語で開発された新しいPythonのパッケージ管理・プロジェクト管理ツールです。特徴として、ライブラリの高速インストールと単一ツールである点が挙げられる。高速インストールについては、pipの8〜10倍程度とのこと。実際にTensorFlow時は高速化を実感できた。単一ツールについては、pip、pip-tools、pipx、poetry、pyenv、virtualenvなどの機能を1つのツールで賄える。
所見
プロジェクト管理で特にこだわりがないのであれば、使ってみる価値はある。
事前準備
Pythonのインストール: https://www.python.org/
uvのインストール
公式サイトではスクリプトによるインストールも紹介しているが、会社ではプロキシではじかれた為、今回はpipでインストールした。なおuvは仮想環境ではなく、グローバス環境にuvをインストールする。
## pipでインストールする場合
## pip等のアップデート
python -m pip install --upgrade pip setuptools wheel
## uvのインストール
pip install uv
## スクリプトでインストールする場合
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
動作確認も兼ねてuvのバージョンを表示する。
uv -V
## uv 0.5.4 (c62c83c37 2024-11-20)
pythonのインストール
次のコマンドでインストール可能なpythonを確認する。
uv python list
cpython-3.13.1+freethreaded-windows-x86_64-none <download available>
cpython-3.13.1-windows-x86_64-none <download available>
cpython-3.12.8-windows-x86_64-none <download available>
cpython-3.11.11-windows-x86_64-none <download available>
cpython-3.10.16-windows-x86_64-none <download available>
cpython-3.10.15-windows-x86_64-none C:\Users\***
cpython-3.9.21-windows-x86_64-none <download available>
cpython-3.8.20-windows-x86_64-none <download available>
cpython-3.7.9-windows-x86_64-none <download available>
pypy-3.10.14-windows-x86_64-none <download available>
pypy-3.9.19-windows-x86_64-none <download available>
pypy-3.8.16-windows-x86_64-none <download available>
pypy-3.7.13-windows-x86_64-none <download available>
実行時の環境では、3.10.15がインストール済みだが、3.11をインストールした場合には次のコマンドでインストールできる。インストール後にuv python listを再度実行すると3.11がインストールされていることがわかる。
uv python install 3.11
プロジェクトの初期化
コマンドプロンプト等で次のコマンドを実行すると下記のファイルとフォルダが作成される。
## 既定のバージョンを使用する場合
uv init (プロジェクト名)
## 特定のバージョンを使用する場合
uv init (プロジェクト名) --python 3.11
## 下記のフォルダが作成される
./(プロジェクト名)
├ .gitignore
├ .python-version
├ hello.py
├ pyproject.toml
└ README.md
仮想環境の作成
次のコマンドで仮想環境を作成する。仮想環境名を指定しない場合には、.venvで仮想環境が作成される。
uv venv (仮想環境名)
ライブラリのインストール
Pythonのライブラリをインストールする場合には、次のコマンドでインストールを行う。
## 個別にインストールする場合
uv add (ライブラリ名)
## まとめてインストールする場合
uv add -r .\requirements.txt
## アンインストールする場合
uv remove (ライブラリ名)
pyproject.tomlのdependenciesにインストールしたライブラリの情報が追加される。なお依存関係で一緒にインストールされたライブラリを確認する場合には、treeコマンドで確認する。
cat pyproject.toml
[project]
name = "testuv"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.11"
dependencies = [
"pandas>=2.2.3",
]
uv tree
testuv v0.1.0
└── pandas v2.2.3
├── numpy v2.2.1
├── python-dateutil v2.9.0.post0
│ └── six v1.17.0
├── pytz v2024.2
└── tzdata v2024.2
pytestなど開発時のみ使用するライブラリはdevオプションをつけることで開発用ライブラリとしインストールされる。pyproject.tomlには、[dependency-groups]にライブラリ名が追加される。
uv add --dev pytest
cat pyproject.toml
[project]
name = "testuv"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.11"
dependencies = [
"pandas>=2.2.3",
]
[dependency-groups]
dev = [
"pytest>=8.3.4",
]
Pythonの実行方法
次のコマンドでPythonを実行できる。
uv run hello.py
Discussion