【发布时间】:2011-01-01 03:09:58
【问题描述】:
从应用程序中使用的特定包中查找所有 python 模块的简单方法是什么?
【问题讨论】:
从应用程序中使用的特定包中查找所有 python 模块的简单方法是什么?
【问题讨论】:
sys.modules 是将模块名称映射到模块的字典。您可以检查其键以查看导入的模块。
【讨论】:
multiprocessing。使用python -v,详细标志有效。
for key in sorted(sys.modules) : print(str(key)) 输出了很多东西。我只想要导入的模块列表。
您可以使用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这个大列表中感兴趣的模块!-)
【讨论】:
我认为modulefinder 是您正在寻找的。您可以直接使用modulefinder.py,将其作为脚本运行,如那里所述,或者您可以使用modulefinder.ModuleFinder 类import the module and then create a report。
【讨论】:
一个真正简单的方法是从包或文件夹中删除所有 .pyc 文件,然后运行应用程序。一旦你玩了一会儿,做一个目录列表,看看现在哪些文件有 .pyc 文件。这些是应用程序导入的模块。
(注意:__main__ 模块,无论您作为“主”脚本调用哪个模块,都不会被编译,因此您不应该期望看到它的 .pyc 文件,除非从应用程序中导入它。这个如果确实发生了,通常是问题的征兆。)
【讨论】: