Python: 模块列表(>>> help('modules') 无法使用)
我想要查看我的模块列表,结果有人告诉我可以用:
>>> help('modules')
这样就可以了。但是我只看到
请稍等,我正在收集所有可用模块的列表...
等了超过10分钟,我实在等不下去了,就把它停掉了。
有没有人知道这可能是什么原因?或者我还有什么其他方法可以查看我的模块?(系统是Ubuntu 9.10/Python 2.6.4)
谢谢,
Dan
3 个回答
2
如果你想查看你已经导入的模块(无论是直接导入还是间接导入),
>>> import sys
>>> print sys.modules
help('modules')
这个命令会列出所有可用的模块,也就是说那些你**可以**导入的模块。如果你安装了很多扩展,可能会有成千上万,甚至数万个“潜在”的模块可以显示,所以收集这些信息可能需要一点时间,这也不奇怪。
8
使用 help("modules")
命令可能会花费很长时间,因为它需要先导入每一个模块,然后才能在这些模块中查找子模块的路径。如果某个模块的代码不在 if __name__ == "__main__":
这个保护条件下,那么这个代码可能会要求用户输入,或者进入无限循环,或者因为其他原因卡住,这样就会导致问题。
实际上,help("modules")
会调用 pkgutil.walk_packages
,这个函数会“导入所有东西”。作为替代方案,你可以使用 iter_modules
,这个函数不会导入所有模块,但它只能遍历顶层模块。
>>> import pkgutil
>>> print [tup[1] for tup in pkgutil.iter_modules()]
['colorama', 'xlrd', 'BeautifulSoup', 'BeautifulSoupTests', '_ctypes', ...
#snip...
..., 'pywin', 'win32ui', 'win32uiole']
这样做也会漏掉一些内置模块,你可以通过 sys
模块单独获取这些内置模块。
>>> import sys
>>> sys.builtin_module_names
('__builtin__', '__main__', '_ast', '_bisect', '_codecs', ...
#snip...
..., 'thread', 'time', 'xxsubtype', 'zipimport', 'zlib')
1
安装ipython
$ sudo apt-get install ipython
然后运行ipython,输入 import <tab>
,其中 <tab> 是指键盘上的Tab键
如果你已经安装了python-pygraphviz这个包,你可以使用
import pygraphviz