web-dev-qa-db-ja.com

pythonプロジェクトで使用されているすべてのモジュール/パッケージを取得する

python GUIアプリケーションがあります。次に、アプリケーションがリンクするすべてのライブラリを知る必要があります。すべてのライブラリのライセンスの互換性を確認できるようにするためです。

Straceを使用してみましたが、アプリケーションで使用されていない場合でも、straceはすべてのパッケージを報告しているようです。

そして、私はpython ModuleFinderを試しましたが、リンクされているシステムレベルのパッケージではなく、python2.7内にあるモジュールを返すだけです。

アプリケーションからリンクされているすべてのライブラリを取得する方法はありますか?

23
user2109788

ライブラリを試すことができます https://github.com/bndr/pipreqs ガイドに従ってください https://www.fullstackpython.com/application-dependencies.html


ライブラリpipreqsはpipでインストール可能で、自動的にファイルrequirements.txtを生成します。これには、virtualenvまたはpythonで正しくインストールされているバージョンで使用するすべてのインポートライブラリが含まれています。

入力するだけです:

pip install pipreqs
pipreqs /home/project/location

印刷されます:

INFO: Successfully saved requirements file in /home/project/location/requirements.txt

さらに、pip install -rコマンドと互換性があります。プロジェクトのvenvを作成する必要がある場合、または現在のpython互換性のあるライブラリのバージョン。次のように入力するだけです。

pip install -r requirements.txt

私も同じ問題を抱えていて、このライブラリーで解決してくれました。依存ライブラリのネストされたレベルがある場合など、依存関係の複数のレイヤーで機能するかどうかは不明です。

-編集-更新:

より洗練されたバージョンマネージャーを探している場合は、pyvenv https://github.com/pyenv/pyenv も検討してください。 virtualenvpipreqsを同じツールでブレンドし、pipreqsのバージョン仕様をいくつか改善しました。

49
SeF

次のコマンドでyolkをインストールします:

pip install yolk

以下を呼び出して、環境内の卵のリストを取得します。

yolk -l

あるいは、 この質問 で回答されているように、依存関係をグラフ化するために snakefood を使用できます。

解凍した卵が保存されているsite-packagesフォルダーに移動して、次のコマンドを実行してみてください。

ls -l */LICENSE*

これにより、各プロジェクトのライセンスファイルのリストが表示されます(それらが通常はEggのルートに保存されている場合)。

0
datashaman