メモ置き場

uvメモ

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

参考