2010-01-04 18 views

回答

35

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

+2

好吧,那很容易! – 2010-01-04 04:09:48

+2

您忘记了参考资料:http://docs.python.org/library/sys.html#sys.modules – 2010-01-04 11:14:07

+1

我不确定详细信息,但实际上并未包含** ALL **可用软件包。我试图确定python在哪里导入不在列表中的'multiprocessing'。使用'python -v',并使用verbose标志。 – 2015-06-12 01:56:04

31

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

+4

这应该是被接受的答案。 – Escualo 2010-01-04 04:17:07

+0

在linux下你必须使用python -v helo.py 2> stuff.txt来允许grep,因为-v似乎输出到stderr。 – Martlark 2016-10-25 02:46:27

0

一个真正简单的方法是从包或文件夹删除所有pyc文件,然后运行该应用程序。一旦你玩了一下,做一个目录列表,看看哪些文件现在有.pyc文件。这些是由应用程序导入的模块。 (注意:__main__模块,无论你调用哪个“main”脚本,都不会被编译,所以除非在应用程序中导入它,否则你不应该期望看到.pyc文件。如果它确实发生,通常是一个问题的迹象。)