2022-06-24 下書き pip-tools (pip-compile)が便利
投稿済み
コードを保守するにあたり、ライブラリのバージョンアップにより互換性が失われて、過去に動いていたコードに対応するライブラリのバージョンが分からなくなる、または調査に時間がかかるという問題が考えられる。
npmではpackage-lock.jsonに依存ツリーのバージョンが記録され、npm ciでそのときのバージョンをインストールできるため、こういった問題が起きにくい。
pipでは、都度venvで新しい空の仮想環境を作ってpip freezeの出力を保持するような操作が必要で、煩雑である。
pip-tools (pip-compile)が便利という知見。
注意として、対象のライブラリをインストールするとき、システム側にpip install時に必要なプログラムが不足しているとき(または、本来pip installに失敗するとき)にエラーメッセージが不親切という問題がある。
code:plain
pip._internal.exceptions.MetadataGenerationFailed: metadata generation failed
例えば、DBドライバのpsycopg2、mysqlclientでこの問題が起きる。
PyPIのドキュメントやリポジトリのREADMEなどを確認して、必要なシステムパッケージを確認、インストールしてからpip-compileすると解消する。