web-dev-qa-db-ja.com

要件ファイルから未使用のパッケージを削除する

requirements fileから不要なパッケージを削除する簡単な方法はありますか?

このタスク用にbashスクリプトを作成しましたが、期待どおりに機能しません。なぜなら、PyPIプロジェクト名の後に使用されないパッケージもあります。例えば;

dj-database-url

パッケージは次のように使用されます

dj_database_url

私のプロジェクトには独自の要件ファイルに多くのパッケージが含まれているため、それらを1つずつ検索するのは面倒で、エラーが発生しやすく、時間がかかりすぎます。私が検索したように、IDEにはまだこのプロパティがありません。

29
myildirim

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にはインポート最適化機能があります。 インポートの最適化... を参照してください。上記の他の手順を実行する前に、この機能を使用すると便利です。

Apply fix for all packages not listed in requirements.txt

59
NickAb

最善の策は、(fresh)python virtual-env withno)パッケージを使用することです、または必要なことが確実にわかっているもののみ、パッケージをテストします。ほとんどのソフトウェアでは非常に高速であるはずの問題が発生したときに、不足しているパッケージをpipでインストールしてからpip freezeコマンドは、本当に必要なパッケージをリストします。 pip wheelパッケージを含むホイールを作成します。
他のアプローチは次のとおりです。

  1. pylint を使用して、各ファイルで未使用のインポートを確認し、削除します(とにかくこれを行う必要があります)。
  2. テストを実行して、それが正しいことを確認し、
  3. snakefood のようなツールを使用して、依存関係の新しいリストを生成します

依存関係チェックが適切に機能するためには、条件付きインポートおよび関数内のインポートを避けることをお勧めします。

また、sureにすべてが揃っている場合は、新しいvirtual-envを構築し、依存関係リストからインストールして、コードを再テストすることをお勧めします。

8
Steve Barnes

私は成功して使用しました pip-check-reqs

コマンドpip-extra-reqs your_directoryを使用すると、your_directoryのすべての未使用の依存関係をチェックします

pip install pip-check-reqsでインストールします。

1
siulkilulki