時間がなくて議論を追っていなかったのですが、標準ライブラリ以外に依存したスクリプトを手軽に配布・実行するための提案である PEP 722 と PEP 723 がしばらく前から議論されていて、先月にPEP 723の方がAcceptされていました。
PEPのサンプルを引用しておきます。 /// script
と ///
で囲われている部分に、必要とするPythonのバージョンと、依存するライブラリを書いています。
# /// script # requires-python = ">=3.11" # dependencies = [ # "requests<3", # "rich", # ] # /// import requests from rich.pretty import pprint resp = requests.get("https://peps.python.org/api/peps.json") data = resp.json() pprint([(k, v["title"]) for k, v in data.items()][:10])
pipx は12月の1.3.0からすでにPEP 723をサポートしていて、 pipx run script.py
で依存ライブラリを持つスクリプトを実行できるようになっていました。
これに気づいたのは、今話題になっている Uv がテストを実行するのに必要な複数のPythonバージョンをダウンロードするスクリプトが利用していたからです。こういう一回だけ実行するスクリプトを実行するのにpipxはすごく便利です。