Closed5

uvでPython環境を作ってみる

すふーすふー

https://docs.astral.sh/uv/guides/install-python/
https://docs.astral.sh/uv/python-versions/

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

すふーすふー

https://docs.astral.sh/uv/guides/tools/

パッケージの一時利用

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

すふーすふー

https://docs.astral.sh/uv/guides/projects/

新規プロジェクトの作成

uv init hello-world

生成されるディレクトリの構造

.
├── pyproject.toml
├── README.md
└── src
    └── hello-world
        └── __init__.py

生成されるpyproject.toml

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も自動で更新される

pyproject.toml
[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

プロジェクトの仮想環境でスクリプトやコマンドが実行できる

すふーすふー

https://docs.astral.sh/uv/pip/environments/
https://docs.astral.sh/uv/python-versions/

プロジェクトを使用せずに仮想環境を作る

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

このスクラップは4ヶ月前にクローズされました