uvのインストール
# 次のコマンドを実行
$ curl -LsSf https://astral.sh/uv/install.sh | sh
# .zshrcに下記を追加
source $HOME/.local/bin/env
uvによるpythonの管理
# 利用可能/インストール済みのpythonの表示
$ uv python list
# インストール
$ uv python install 3.14.0
Installed Python 3.14.0 in 1.17s
+ cpython-3.14.0-macos-aarch64-none (python3.14)
# `uv python dir`のディレクトリにインストールされる
$ ls $(uv python dir)
cpython-3.14.0-macos-aarch64-none
スクリプトの実行
$ echo 'print("hello")' > hello.py
$ uv run hello.py
hello
# pythonバージョンを指定して実行
$ uv run --python 3.14 hello.py
スクリプトへの依存関係の追加
$ uv add --script hello.py 'requests'
Updated `hello.py`
# Inline script metadataに追記される
$ cat hello.py
# /// script
# requires-python = ">=3.14"
# dependencies = [
# "requests",
# ]
# ///
print("hello")
# 実行時に依存パッケージが解決される
$ uv run hello.py
Installed 5 packages in 5ms
hello
# 依存パッケージのlockfileの生成 => hello.py.lock を生成する
$ uv lock --script hello.py
project
# プロジェクトの作成
$ uv init example
$ uv init # カレントディレクトリで作成
# 依存パッケージの追加
$ uv add requests
# 依存パッケージの削除
$ uv remove requests
# 依存パッケージの更新
$ uv lock --upgrade-package requests
# スクリプトの実行
$ uv run main.py
# コマンドの実行
$ uv run -- python
# uv runの実行時に依存パッケージの解決とlockfileの更新が行われる
ツールの実行
# ツールの実行
$ uv tool run ruff check main.py
# 上記のエイリアス
$ uvx ruff check main.py
# バージョン指定
$ uvx [email protected] check main.py
$ uvx ruff@latest check main.py
# ツールのインストール
$ uv tool install ruff
# `uv tool dir`のディレクトリにインストールされる
$ ls $(uv tool dir)
ruff
その他
# 依存関係の表示
$ uv tree
# uv自体の更新
$ uv self update
# キャッシュクリア
$ uv cache clean
# 古くなったキャッシュをクリア
$ uv cache prune
参考