requirements fileから不要なパッケージを削除する簡単な方法はありますか?
このタスク用にbashスクリプトを作成しましたが、期待どおりに機能しません。なぜなら、PyPIプロジェクト名の後に使用されないパッケージもあります。例えば;
dj-database-url
パッケージは次のように使用されます
dj_database_url
私のプロジェクトには独自の要件ファイルに多くのパッケージが含まれているため、それらを1つずつ検索するのは面倒で、エラーが発生しやすく、時間がかかりすぎます。私が検索したように、IDEにはまだこのプロパティがありません。
PyCharm でコード検査を使用できます。
requirements.txt
の内容を削除しますが、空のファイルは保持します。プロジェクトをロードし、PyCharmはCode -> Inspect code...
に移動します。ダイアログでWhole project
オプションを選択し、OK
をクリックします。検査結果パネルで、Python
の下のPackage requirements
セクションを見つけます(このセクションは、requirements.txt
またはsetup.py
ファイルがある場合にのみ表示されます)。セクションには、次のメッセージのいずれかが含まれます。
Package requirement '<package>' is not satisfied
は、requirements.txt
にリストされているが、.pyファイルでは使用されていないパッケージがある場合。Package '<package>' is not listed in project requirements
。pyファイルで使用されているが、requirements.txt
にリストされていないパッケージがある場合。2回目の検査に興味があります。 requirements.txt
セクションを右クリックして[Package requirements
]を選択すると、使用済みのすべてのパッケージをApply Fix 'Add requirements '<package>' to requirements.txt'
に追加できます。パッケージ名は1つしか表示されないことに注意してください。ただし、セクションで呼び出された場合は、実際にすべての使用済みパッケージがrequirements.txt
に追加されます。
必要に応じて、それらを1つずつ追加し、特定のパッケージに対応する検査を右クリックしてApply Fix 'Add requirements '<package>' to requirements.txt'
を選択し、この種の検査ごとに繰り返します。
その後、クリーンな仮想環境を作成し、新しいrequirements.txt
からパッケージをインストールできます。
また、PyCharmにはインポート最適化機能があります。 インポートの最適化... を参照してください。上記の他の手順を実行する前に、この機能を使用すると便利です。
最善の策は、(fresh)python virtual-env withno)パッケージを使用することです、または必要なことが確実にわかっているもののみ、パッケージをテストします。ほとんどのソフトウェアでは非常に高速であるはずの問題が発生したときに、不足しているパッケージをpip
でインストールしてからpip freeze
コマンドは、本当に必要なパッケージをリストします。 pip wheel
パッケージを含むホイールを作成します。
他のアプローチは次のとおりです。
依存関係チェックが適切に機能するためには、条件付きインポートおよび関数内のインポートを避けることをお勧めします。
また、sureにすべてが揃っている場合は、新しいvirtual-envを構築し、依存関係リストからインストールして、コードを再テストすることをお勧めします。
私は成功して使用しました pip-check-reqs 。
コマンドpip-extra-reqs your_directory
を使用すると、your_directory
のすべての未使用の依存関係をチェックします
pip install pip-check-reqs
でインストールします。