概要
uv は高速なPythonパッケージ・プロジェクト管理ツールで、Rust製。 PEP 723 により、スクリプト内に依存関係やPythonバージョンを記述可能。 uvx や uv run を使えば、依存関係のセットアップ不要でワンオフスクリプト実行が容易。 YouTubeトランスクリプト抽出など、実用的な例も紹介。 従来よりPythonスクリプト実行のハードルが大幅に低減。
uvとPEP 723の活用
- uv はRust製の高速Pythonパッケージ・プロジェクト管理ツール
- Node/NPMの npx のような uvx コマンドを提供
- 必要なPythonバージョンや依存関係を自動セットアップ
- PEP 723 はPythonスクリプト内にメタデータ(依存関係やバージョン)を埋め込む仕様
- スクリプト上部に requires-python や dependencies を記述
- スクリプト単体で実行環境の再現が可能
- uv run や uvx を使うことで、事前準備不要で即座にスクリプト実行
- 例:
$ uvx ruff --versionで依存パッケージを即時インストール・実行 - 例:
$ uv run pep.pyでPEP 723メタデータ付きスクリプトをワンコマンド実行
- 例:
- スクリプト例:YouTube動画のトランスクリプト抽出
- シェバン行:
#!/usr/bin/env -S uv run --scriptでuvを明示 - 必要なパッケージやPythonバージョンもスクリプト内メタデータで宣言
- 実行方法:
chmod +x ytt後、./ytt <YouTube URLまたは動画ID>で即実行
- シェバン行:
PEP 723メタデータ記載例
-
スクリプト冒頭に以下のように記述
# /// script # requires-python = ">=3.11" # dependencies = [ # "requests<3", # "rich", # ] # ///- 依存パッケージやバージョン条件を明示
- 外部ツールやIDEがこの情報を利用可能
uv runによるワンオフスクリプト実行
uv run <スクリプト名>で依存関係を自動インストール後に実行- 例:
uv run pep.py- 必要パッケージを24msでインストール
- スクリプトの結果を即座に出力
- 例:
YouTubeトランスクリプト抽出スクリプト例
- シェバン行で
uv run --scriptを指定 - PEP 723メタデータで
youtube-transcript-api依存を宣言 - コマンドライン引数でYouTube URLまたは動画IDを受け取り、トランスクリプトを取得・表示
- 実行例:
./ytt https://www.youtube.com/watch?v=zgSQr0d5EVg- 必要パッケージを10msでインストールし、トランスクリプトを即出力
Pythonワンオフスクリプトの新時代
- これまでGoなどの自己完結型バイナリが一発実行に便利だった
- uv と PEP 723 の組み合わせで、Pythonスクリプトも同等の利便性を獲得
- 例:YouTubeトランスクリプト抽出サーバーをPythonで即席実装
- Githubリポジトリ: cottongeeks/ytt-mcp
参考リソース
まとめ
- uv と PEP 723 でPythonスクリプト実行が圧倒的に手軽
- 依存関係やバージョン管理をスクリプト内で完結
- ワンオフツールや小規模自動化に最適な選択肢