本文へスキップ
MameTechNews
バックエンド

pip 26.3、wheel導入中の想定外importをエラーにする

## POINTS

  • 26.1の警告がエラーになり、wheel導入中の想定外importは失敗する。壊れる場合はissueが依頼されている。
  • 信頼できないwheelの導入は、importがコードを実行し得るため、従来から安全とは扱われていない。
  • pylock.tomlのextrasと非既定グループを指定できるが、ロックファイルからの導入は実験的のままである。

PyPAのnotatallshaw氏は11月2日、pip 26.3を発表した。2026年の四半期機能リリースとしては最後である。中心は、wheelを導入している間に、pipが予期しないモジュールimportをブロックすることだ。26.1で警告になり、26.3で強制になる、と案内されている。中断した導入からの復帰も改善する。正当なパッケージの導入が失敗する場合は、issueを開くよう求めている。

同時にセキュリティ方針を明確化した。信頼できないwheelを入れてよい、という前提をpipは一度もとっていない。Pythonのimport機構が動的で、導入中に第三者のコードが実行されないことを保証できない、という理由である。今回のブロックは、その経路を狭める変更であり、任意のwheelが安全になるという意味ではない。

ロックファイルの導入も広がった。python -m pip install -r "pylock.toml[extra1,extra2]" で、ロックファイルが定義するextrasを選べる。ローカルでは --group pylock.toml:dev のように、既定ではない依存グループも指定できる。-r pylock.toml は、既定グループがあればそれを入れる。--no-binary は、記録されたソース配布を正しく選べるようになった。これらの導入は実験的のままだ。

ローカルプロジェクトでは、editableを含めて、ビルドバックエンドのUserWarningが通常の詳細度で BuildBackendWarning として見える。ソースアーカイブやリモートからのビルドではdebugなので、見るには -vv が要る。CIでpipを固定している場合、導入中のimportに依存していたパッケージはここで止まる。警告が出ていた環境は、どのモジュールかを先に記録しておく。