查找正在导入的Python模块

45 投票
4 回答
22138 浏览
提问于 2025-04-15 17:36

有没有简单的方法可以找到一个特定包里面所有在应用程序中使用的Python模块呢?

4 个回答

2

我觉得你需要的就是modulefinder。你可以直接使用modulefinder.py,按照上面描述的方式运行它,或者你也可以导入这个模块,然后使用modulefinder.ModuleFinder类来生成报告

35

你可以使用 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 从这个大列表中筛选出你感兴趣的模块!-)

40

sys.modules 是一个字典,它把模块的名字和实际的模块对应起来。你可以查看这个字典里的键,来看看哪些模块已经被导入了。

详细信息请查看: http://docs.python.org/library/sys.html#sys.modules

撰写回答