2010-01-04 50 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文件。如果它確實發生,通常是一個問題的跡象。)