查找正在导入的python模块

时间:2010-01-04 04:01:57

标签: python package

从应用程序中使用的特定包中查找所有python模块的简单方法是什么?

4 个答案:

答案 0 :(得分:36)

sys.modules是一个字典映射模块名称到模块。您可以检查其键以查看导入的模块。

答案 1 :(得分:34)

您可以使用python -v,它会发出有关每个导入模块的消息:

$ 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从这个大型列表中感兴趣的模块! - )

答案 2 :(得分:1)

我认为modulefinder正是您所寻找的。您可以直接使用modulefinder.py,将其作为脚本运行,也可以modulefinder.ModuleFinder使用{{1}}类。

答案 3 :(得分:0)

一个真正简单的方法是从包或文件夹中删除所有.pyc文件,然后运行该应用程序。一旦你玩了一下,做一个目录列表,看看哪些文件现在有.pyc文件。这些是由应用程序导入的模块。

(注意:__main__模块,无论你调用哪个“主”脚本,都不会被编译,所以你不应该期望看到它的.pyc文件,除非从应用程序中导入它如果它确实发生,这通常是一个问题的迹象。)