find正在导入哪些python模块

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

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

你可以使用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感兴趣的模块!)

我认为模块search是你在找什么。 您可以直接使用modulefinder.py ,将其作为脚本运行,也可以导入模块,然后使用modulefinder.ModuleFinder类创build报告 。

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

(注意: __main__模块,无论你调用哪个“main”脚本,都不会被编译,所以除非在应用程序中导入它,否则你不应该期望看到一个.pyc文件。一个问题,如果它发生。)