アプリケーションで使用されている特定のパッケージからすべてのpythonモジュールを見つける簡単な方法は何ですか?
sys.modules
は、モジュール名をモジュールにマッピングする辞書です。キーを調べて、インポートされたモジュールを確認できます。
python -v
を使用すると、everyインポートされたモジュールに関するメッセージが送信されます。
$ echo 'print "hello world"' > helo.py
$ python -v helo.py
# installing zipimport hook
import zipimport # builtin
# installed zipimport hook
# /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site.pyc matches /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site.py
import site # precompiled from /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site.pyc
# /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/os.pyc matches /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/os.py
import os # precompiled from /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/os.pyc
import posix # builtin
# /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/posixpath.pyc matches /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/posixpath.py
import posixpath # precompiled from /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/posixpath.pyc
...などなど。もちろん、後でこの大きなリストの中から関心のあるモジュールをgrep
することができます!-)
modulefinder があなたが探しているものだと思います。 modulefinder.py
を直接使用して、そこで説明されているようにスクリプトとして実行するか、 モジュールをインポートしてからレポートを作成するmodulefinder.ModuleFinder
クラスを使用することができます。
本当に簡単な方法は、パッケージまたはフォルダーからすべての.pycファイルを削除してから、アプリケーションを実行することです。少し遊んだら、ディレクトリリストを作成して、どのファイルに.pycファイルがあるかを確認します。これらは、アプリケーションによってインポートされたモジュールです。
(注:__main__
モジュールは、「メイン」スクリプトとして呼び出したものはコンパイルされないため、アプリケーション内からインポートされない限り、.pycファイルが表示されることはありません。それが起こった場合、これはしばしば問題の兆候です。)