phy*_*ael 6 python module tab-completion ipython enthought
我正在使用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当我有时间的时候,我会试着去研究一下它在寻找模块的位置.
Car*_*oba 13
在我厌倦了这种行为之后,昨天我找到了这个问题的答案.
似乎IPython有一个简单的数据库,包含它可以找到的所有模块sys.path.每次安装新模块时都必须编写魔法
In [1]: %rehashx
Run Code Online (Sandbox Code Playgroud)
以便IPython重新生成其数据库.然后,您可以完成新模块的TAB.
Ipython/completer.py 的末尾是以下代码:
except:
#from IPython.ultraTB import AutoFormattedTB; # dbg
#tb=AutoFormattedTB('Verbose');tb() #dbg
# If completion fails, don't annoy the user.
return None
Run Code Online (Sandbox Code Playgroud)
也许取消注释会给你一个线索
| 归档时间: |
|
| 查看次数: |
1501 次 |
| 最近记录: |