pythonパッケージAにはB、C、Dが必要です。ロードせずにA→B C Dを一覧表示する方法はありますか?Requires
メタデータ(yolk -M A
)しばしば不完全です、grr。
A.tar/A.Eggをダウンロードして、A/setup.pyを調べることができますが、それらのいくつかはかなりひどいものです。
(少なくとも第1レベルの依存関係を取得することは機械化できると思っていました。98%のソリューションでさえ、ダウンロードをなだめるよりはましです。)
sfood -fuq package.py | sfood-target-files
依存関係を一覧表示します。
`-f` tells sfood to follow dependencies recursively
`-u` tells sfood to ignore unused imports
`-q` tells sfood to be quiet about debugging information
標準ライブラリからモジュールを除外するには、次を使用できます。
sfood -fuq package.py | sfood-filter-stdlib | sfood-target-files
すでに述べたように、無視したいディレクトリが他にある場合は、sfood -I
フラグを使用することもできます。
modulefinder 標準ライブラリから
バージョン2.3の新機能。
このモジュールは、スクリプトによってインポートされたモジュールのセットを判別するために使用できるModuleFinderクラスを提供します。 modulefinder.pyはスクリプトとして実行することもでき、引数としてPythonスクリプトのファイル名を指定します。その後、インポートされたモジュールのレポートが出力されます。
モジュールをロードしないという要件に準拠しているかどうかはわかりません。 ここから :
modulefinderは、バイトコード検査を使用して依存関係を見つけるため、調査対象のモジュールをインポートすることによって引き起こされる可能性のある副作用がありません。
PylintまたはGui2exeの使用に関するその他のヒント ここ
パッケージとは、pipがインストールされたパッケージ(__init__。pyのあるディレクトリではない)を意味する場合、pipと呼ばれるPythonパッケージを使用できます。例:
def get_all_package_dependencies():
"""Return dictionary of installed packages to list of package dependencies."""
return {
dist.key: [r.key for r in dist.requires()]
for dist in pip.get_installed_distributions()
}