2026年11月2日、Pythonのパッケージ管理ツールpipの26.3が公開されました。10月20日の26.2.2から、およそ2週間での新しい版です。
今回は、初心者がうっかりしがちな打ち間違いに、はっきりエラーで知らせてくれる変更が目立ちます。これまでのpipは、効かないオプションや余計な引数を、黙って無視することがありました。
あわせて、インストール中の予期しないimportを止める安全対策や、ロックファイルpylock.tomlまわりの機能追加も入っています。今回は、26.2.2と26.3で同じコマンドを打ちながら、何が変わったのかを見ていきます。
まずは26.3で何が変わったのかを整理しよう¶
最初に、26.3の主な変更を表にまとめます。内容は、pipの公式リポジトリにある変更履歴NEWS.rstにもとづいています。
| 分類 | 主な変更 |
|---|---|
| 安全対策 | インストール中の予期しないimportを止め、危ないimportは後で警告する |
| ドキュメント | 信頼できないwheelのインストールは安全ではないと、方針に明記 |
| 新機能 | pylock.tomlで、追加機能やグループを選んでインストールできるように |
| 速度 | コマンドを含むwheelのインストールを高速化 |
| 不具合の修正 | 効かないオプションや余計な引数を、エラーとして知らせるように |
| 同梱ライブラリ | certifi、urllib3、richなどを新しい版に |
PyPIの記録によると、26.3が必要とするPythonは、これまでどおり3.10以上です。変更履歴には、Python 3.10でもTOML 1.0を読めるよう、tomliという同梱のライブラリを古い版に戻したとも書かれています。
pipそのものの使い方は、こちらで紹介しています。【関連記事】pipとは?
効かないオプションを、黙って無視しなくなった¶
まずは、初心者に一番関係しそうな変更から見ていきましょう。変更履歴によると、--versionは、pipそのものの版を表示するときだけ使えるようになりました。
これまでは、pip list --versionのように、installやlistといったサブコマンドの後ろに付けても、エラーにならずに受け付けられていました。
26.2.2と26.3で打ってみた¶
実際に試してみましょう。26.2.2と26.3を、それぞれ新しい仮想環境に入れ、手元のPython 3.11で同じコマンドを打ちました。
新しい版の案内を止めるため、環境変数PIP_DISABLE_PIP_VERSION_CHECKを1にしています。
$ pip list --version # pip 26.2.2
pip 26.2.2
setuptools 79.0.1
$ pip list --version # pip 26.3
no such option: --version
26.2.2では、--versionが黙って無視され、ふつうに入っているパッケージの一覧が表示されました。pipの版を知りたかったのに、別のものが出てきたわけです。
26.3では、no such option: --version、つまりそんなオプションはない、とはっきり教えてくれました。pipの版を知りたいときは、pip --versionのように、サブコマンドを付けずに打ちます。
$ pip --version
pip 26.3 from .../pv26.3/lib/python3.11/site-packages/pip (python 3.11)
pip config editの余計な引数も¶
同じように、pip config editに渡した余計な引数も、エラーになるようになりました。setと間違えて、pip config edit global.timeoutと打ってしまった場面を試しています。
| 版 | pip config --site edit --editor true global.timeoutの結果 |
|---|---|
| 26.2.2 | 何も表示されずに終わった。global.timeoutは黙って無視された |
| 26.3 | ERROR: Got unexpected number of arguments, expected 0.と表示された |
editは、設定ファイルをエディタで開くだけのコマンドで、値を指定する引数は受け付けません。値を設定したいなら、pip config set global.timeout 60のようにsetを使います。
こうした変更はどれも、打ち間違いに、その場で気づけるようにするためのものです。
設定の値が間違っているときの案内も親切に¶
変更履歴には、設定の値が正しくないときに、よりわかりやすいエラーを出すようにしたとも書かれています。試しに、待ち時間を表すPIP_TIMEOUTに、数字ではないabcを入れて実行してみました。
pip 26.2.2
An error occurred during configuration: option timeout: invalid floating-point value: 'abc'
pip 26.3
An error occurred during configuration: option timeout: invalid floating-point value: 'abc'. Check your pip configuration files or environment variables for this value. See https://pip.pypa.io/en/stable/topics/configuration/ for more information.
26.3では、設定ファイルか環境変数を確かめるように、という一文と、設定についての説明ページの案内が加わりました。どこを直せばよいのかがわかるのは、慣れていない人にとって大きな助けになります。
インストール中の安全対策¶
続いて、安全面の変更です。変更履歴によると、インストール中に予期しないimportが起きるのを止め、インストール後には、危ないimportについて警告するようになりました。
あわせて、インストールが途中で止まってしまったときに、元の状態へ戻しやすくする改善も入っています。
wheelのインストールは、そもそも安全とは限らない¶
もう1つ、セキュリティの方針の説明にも、大事な一文が加わりました。それは、pipは、信頼できないwheelをインストールすることを、安全だと考えたことは一度もない、というものです。
wheelとは、すぐにインストールできる形にまとめた配布用のファイルのことです。変更履歴では、Pythonのimportの仕組みは動的なので、wheelを入れるだけで、ほかの人が書いたコードが動かないとは保証できない、と説明されています。
学習者が気をつけたいこと¶
つまり、インストールするという行為そのものが、相手のコードを信頼することでもあるわけです。名前の似た偽のパッケージを、うっかり入れてしまう被害も、世界中で報告されています。
| 気をつけること | 具体的には |
|---|---|
| 名前を打つ前に確かめる | 公式の説明書やPyPIのページで、正しい名前を確かめる |
| 知らない配布元のファイルを入れない | URLやファイルを直接指定するときは、配布元を確かめる |
| 入れたものを点検する | pip-auditで、既知の脆弱性がないか調べる |
pip-auditの使い方は、こちらで紹介しています。【関連記事】pip-auditとは?Pythonライブラリの脆弱性をチェックする方法
pylock.tomlまわりの機能追加¶
続いて、新機能です。pylock.tomlは、PEP 751で決められた、インストールする版を固定して記録するためのロックファイルの形式です。
ロックファイルとは、どのパッケージのどの版を入れたのかを、すべて書き残しておくファイルのことです。同じファイルを使えば、誰の環境でも同じ版をそろえられます。
26.3で加わったこと¶
変更履歴から、pylock.tomlに関する変更を表にまとめます。
| 変更 | 書き方の例 |
|---|---|
| 追加機能(extras)を選んで入れる | pip install -r "pylock.toml[extra1,extra2]" |
| 既定以外のグループを選ぶ | pip install --group pylock.toml:docs |
--no-binaryと組み合わせる |
記録されたURLのソース配布物を使うように修正 |
追加機能とは、requests[socks]のように、必要な人だけが追加で入れる機能のことです。グループは、ドキュメントづくり用やテスト用など、目的ごとにパッケージをまとめたものです。
uvで作ったpylock.tomlを、pipで入れてみた¶
pylock.tomlは、uvでも作れます。手元のuv 0.13.7でuv export --format pylock.tomlを実行すると、ロックファイルが書き出されました。
そのファイルを、pip 26.3でpip install -r pylock.tomlとして入れたときの表示です。
WARNING: Using pylock.toml as a requirements source is an experimental feature. It may be removed/changed in a future release without prior warning.
ロックファイルに書かれたパッケージは入りましたが、pylock.tomlを読み込む機能は、まだ試験的なものだと警告されています。予告なく変わる可能性があるので、大事な環境で使うときは、pipの版を固定しておきましょう。
uvの使い方は、こちらで紹介しています。【関連記事】uvとは?Rust製の高速Pythonパッケージ管理ツール
まだpylock.tomlを使っていない方も多いと思います。チームで同じ環境をそろえる方法の1つとして、知っておくとよいでしょう。
そのほかの変更¶
ほかにも、細かな修正がたくさん入っています。初心者にも関係しそうなものを紹介します。
| 修正 | 中身 |
|---|---|
| 見ている版が1つだけのとき | 複数の版を見ている、という案内を出さないように |
| 誤解を招くエラー | ; extra == "..."のような印を含むエラーの文面を整理 |
| リダイレクト | HTTPのリダイレクトで、file:のURLへ移らないように |
| 認証情報 | キャッシュの警告に、URLの中の認証情報を表示しないように |
| UTF-8の設定ファイル | PythonのUTF-8モードで、UTF-8の設定ファイルを読めるように修正 |
同梱のライブラリも、新しい版に上がっています。たとえば、HTTPSの証明書を確かめるためのcertifiは2026.10.23に、通信を担うurllib3は2.8.0になりました。
上げる方法と、確かめたいこと¶
最後に、pipを26.3へ上げる方法と、確かめておきたいことを整理します。pipの更新は、仮想環境ごとに行います。
python -m pip install --upgrade pip
pip install --upgrade pipではなく、python -m pipと書くのがおすすめです。どのPythonのpipを上げているのかが、はっきりするからです。
| 順番 | 確認すること |
|---|---|
| 1 | スクリプトやCIで、サブコマンドの後ろに--versionを付けていないか |
| 2 | pip config editに、余計な引数を渡していないか |
| 3 | 知らない配布元のパッケージやwheelを入れていないか |
| 4 | 仮想環境ごとに、pipを上げたか |
なお、Python 3.15.1に同梱されたpipは26.2.2でした。新しく作った仮想環境では古いpipが入っていることがあるので、最初に上げておくと安心です。【関連記事】Python 3.15.1と3.15.2が相次いで公開
私は10年ほどエンジニアとして開発に関わってきましたが、CIの設定に、効いていないオプションが何年も残っていたのを見つけたことがあります。黙って無視されると、効いているつもりのまま気づけません。
効かないものはエラーにするという今回の方向は、地味ですがとても大切です。
まとめ¶
2026年11月2日、pip 26.3が公開されました。サブコマンドに付けた--versionや、pip config editの余計な引数を、黙って無視せずにエラーで知らせるようになり、インストール中の予期しないimportを止める安全対策も入っています。
pylock.tomlで追加機能やグループを選べるようにもなりました。使っている仮想環境で、python -m pip install --upgrade pipを実行しておきましょう。
ここまでお読みいただきありがとうございました。