pip 26.1の目玉:`pip lock`コマンドとpylock.toml
Pythonエコシステムの中核を担うパッケージインストーラー「pip」が、バージョン26.1へとアップデートされた。Simon Willison氏のブログ記事およびRichard Si氏の公式解説によれば、今回の更新は単なるバグ修正にとどまらず、開発ワークフローを根本から変えうる2つの重要機能を含んでいるとSourceが報じている。
最大の目玉は、`pip lock`コマンドによるロックファイル生成機能だ。たとえば以下のコマンドを実行すると:
pip lock datasette llm
DatasetteとLLM、およびそれらが依存するすべてのパッケージのバージョン情報が、`pylock.toml`というファイルに書き出される。Simon Willison氏が実際に試したところ、このファイルは519行にも及ぶ詳細な依存関係ツリーを記録していたという。生成されたファイルのサンプルはGistで公開されており、TOMLフォーマットで各パッケージのバージョン・ハッシュ・ソースURLが網羅的に記述されている。
ロックファイルの重要性は、チーム開発や本番環境デプロイの文脈で特に際立つ。従来の`requirements.txt`では「インストール時点での最新版」が使われるため、時間の経過とともに環境が再現できなくなる問題があった。`pylock.toml`はこの問題を解決し、`uv`や`poetry`といったモダンなツールが先行して実装してきたロックファイル機能をpip本体が公式サポートするという、エコシステム全体にとって意義深い一歩となる。
依存関係クールダウン:`--uploaded-prior-to`オプションの実力
2つ目の注目機能が「依存関係クールダウン(dependency cooldowns)」だ。これは`--uploaded-prior-to`オプションとして実装されており、指定した日数よりも前にPyPIへアップロードされたバージョンのみをインストール対象とする仕組みである。
具体的な書式は`P{日数}D`というISO 8601の期間フォーマット(日数のみサポート)に従う。たとえば:
pip install llm --uploaded-prior-to P4D
このコマンドは「4日以上前にアップロードされたllmのバージョン」をインストールする。Simon Willison氏が実際に試したところ、3日前にリリースしたばかりのllm 0.31ではなく、ひとつ前のバージョン0.30がインストールされたことが確認されている。
なぜこの機能が重要なのか。背景にあるのは、悪意ある攻撃者が正規パッケージの新バージョンに見せかけたマルウェアを短期間だけPyPIに公開し、多くのユーザーがアップデートする前に被害を広げる「タイポスクワッティング」や「サプライチェーン攻撃」への対策だ。新しくアップロードされたパッケージには、まだコミュニティによる十分なレビューが行われていない可能性がある。クールダウン期間を設けることで、セキュリティ上の問題が発覚・報告されるまでの猶予を確保できる。
この機能の概念はSimon Willison氏が2026年3月の記事「パッケージマネージャーにはクールダウンが必要だ」で提唱していたものであり、pip本体への実装は思想から実装への転換という点でも注目に値する。
Python 3.9サポート終了とセットアップ手順
pip 26.1では、2024年10月にEOL(サポート終了)を迎えたPython 3.9のサポートが正式に打ち切られた。注意が必要なのは、macOSがシステムデフォルトとして`python3`コマンドでPython 3.9を提供しているケースがある点だ。新機能を試すには、Python 3.10以降の環境が必要となる。
Simon Willison氏はPython 3.14を使った検証手順を以下のように紹介している:
uv python install 3.14
mkdir /tmp/experiment
cd /tmp/experiment
python3.14 -m venv venv
source venv/bin/activate
pip install -U pip
pip --version
`uv`を使ってPython 3.14をインストールし、仮想環境を作成してpipを最新版に更新するという手順だ。`uv`はRustベースの高速Pythonツールチェーンマネージャーであり、複数のPythonバージョンを共存管理するのに便利なツールとして広く普及しつつある。この手順自体、現代的なPython開発のベストプラクティスを体現している。
記者の視点:pipの「モダン化」がエコシステムに与える意味
pip 26.1は、一見地味に見えて実は非常に重要なリリースだと筆者は評価する。ロックファイルと依存関係クールダウンはいずれも、`uv`・`poetry`・`pipenv`といったサードパーティツールが先行して実装してきた機能だ。長年「pipは機能が少ない」と批判されてきたが、今回の更新はpip本体がエコシステムの標準的な期待に追いつきつつあることを示している。
特にロックファイルの標準化は大きな意味を持つ可能性がある。現状では各ツールが独自形式のロックファイルを生成しており、プロジェクト間の互換性に課題があった。pip公式が`pylock.toml`という形式を採用することで、将来的にはツール間の相互運用性が向上すると推測される。セキュリティ面でも、クールダウン機能の標準搭載はサプライチェーン攻撃対策を「意識の高い開発者だけの話」から「デフォルトで選択できる話」へと格上げする一歩と言えるだろう。Python開発者にとって、今すぐアップデートを検討する価値のあるリリースだ。


