uvでPython環境を作ってみる
uvのインストール
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
uvのアップデート
uv self update
バージョン確認
uv version
uv 0.2.27 (833097b93 2024-07-19)
Pythonのインストール
uv python list --all-versions
warning: `uv python list` is experimental and may change without warning
cpython-3.12.4-windows-x86_64-none <download available>
cpython-3.12.3-windows-x86_64-none <download available>
cpython-3.12.2-windows-x86_64-none <download available>
cpython-3.12.1-windows-x86_64-none <download available>
cpython-3.12.0-windows-x86_64-none <download available>
cpython-3.11.9-windows-x86_64-none <download available>
...
uv python install 3.12.3
warning: `uv python install` is experimental and may change without warning
Searching for Python versions matching: Python 3.12.3
Installed Python 3.12.3 in 15.65s
+ cpython-3.12.3-windows-x86_64-none
パッケージの一時利用
uvx ruff --version
warning: `uvx` is experimental and may change without warning
Resolved 1 package in 338ms
Prepared 1 package in 4.47s
Installed 1 package in 11ms
+ ruff==0.5.4
ruff 0.5.4
パッケージのインストール
uv tool install ruff
warning: `uv tool install` is experimental and may change without warning
Resolved 1 package in 9ms
Installed 1 package in 12ms
+ ruff==0.5.4
Installed 1 executable: ruff.exe
warning: C:\Users\[ユーザ名].local\bin is not on your PATH. To use installed tools, run $env:PATH = "C:`\Users`[ユーザ名]`.local`\bin;$env:PATH".
パスを通せば使えるようになった
インストールされているパッケージの一覧
uv tool list
warning: `uv tool list` is experimental and may change without warning
ruff v0.5.4
- ruff.exe
新規プロジェクトの作成
uv init hello-world
生成されるディレクトリの構造
.
├── pyproject.toml
├── README.md
└── src
└── hello-world
└── __init__.py
生成されるpyproject.toml
[project]
name = "hello-world"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
dependencies = []
[tool.uv]
dev-dependencies = []
プロジェクトにパッケージを追加
uv add 'requests==2.31.0'
pyproject.tomlの設定やuv.lockも自動で更新される
[project]
name = "hello-world"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
dependencies = [
"requests==2.31.0",
]
[tool.uv]
dev-dependencies = []
開発環境の依存関係として追加したい場合は--dev
オプションをつける
プロジェクト外で実行しようとするとエラーになる
error: No `pyproject.toml` found in current directory or any parent directory
プロジェクトからパッケージを削除
uv remove requests
コマンドの実行
uv run python my_script.py
プロジェクトの仮想環境でスクリプトやコマンドが実行できる
プロジェクトを使用せずに仮想環境を作る
uv venv hello-venv --python 3.9
x No interpreter found for Python 3.9 in system path or `py` launcher
デフォルトだとシステムにインストールされていないバージョンは使用できない(uv python install
でインストールしたものは使えない)
uv venv hello-venv --preview --python 3.9
--preview
オプションをつけると、インストールされていない場合はuv管理下のPythonインタプリタを探し、それでも見つからない場合はインストールして仮想環境を作成してくれる
元々システムにインストールされていたPythonインタプリタのパス
C:\Users\[ユーザ名]\AppData\Local\Programs\Python\Python311\python.exe
uvによってインストールされたPythonインタプリタのパス
C:\Users\[ユーザ名]\AppData\Roaming\uv\data\python\cpython-3.9.19-windows-x86_64-none\python.exe
仮想環境にパッケージを追加
hello-venv\Scripts\activate
uv pip install pytest
仮想環境のパッケージ一覧
uv pip list