如何获得所有可用的python模块列表?
我不想要模块的模块.只是可用的所有模块的基本列表sys.path.
help('modules') 不是解决方案,因为我希望它可用作变量,并导入那些具有副作用的模块.
编辑:有副作用我的意思是http://kivy.org/的 kivy这样的库,它利用了这个事实,一旦导入它就会执行代码.
我正在使用EPD版本的python和IPython.使用easy_install安装一些模块之后我注意到,尽管可以导入它们,但它们不能完成选项卡.它们存在于路径上但是,虽然包含模块(pylab,readline,math)可以完成,但这些新模块却不能.
任何人都知道我应该调查什么来找到问题?我检查过这些包与其他模块在同一个地方:
In [1]: import pylab
In [2]: pylab
Out[2]: <module 'pylab' from '/Library/Frameworks/Python.framework/Versions/5.0.0/lib/python2.5/site-packages/pylab.pyc'>
In [3]: import BeautifulSoup
In [4]: BeautifulSoup
Out[4]: <module 'BeautifulSoup' from '/Library/Frameworks/Python.framework/Versions/5.0.0/lib/python2.5/site-packages/BeautifulSoup-3.1.0.1-py2.5.egg/BeautifulSoup.pyc'>
Run Code Online (Sandbox Code Playgroud)
也许某些事情没有.eggs正确处理?谢谢.
更新:关注gnibbler的帖子后,我发现选项卡完成在completer.py的第633行遇到异常:
try:
ret = self.matches[state].replace(magic_prefix,magic_escape)
return ret
except IndexError:
return None
Run Code Online (Sandbox Code Playgroud)
但是造成失败的原因是什么......
更新:
In [5]: from Bea<tab_here>
*** COMPLETE: <Bea> (0)
matches: []
state: 0
Run Code Online (Sandbox Code Playgroud)
所以这只是说匹配列表是一个空集:没有匹配.它仍然没有找到模块.matches当我有时间的时候,我会试着去研究一下它在寻找模块的位置.