【发布时间】:2010-12-05 21:28:29
【问题描述】:
我正在使用 EPD 版本的 python 和 IPython。在使用 easy_install 安装了一些模块后,我注意到虽然它们可以被导入,但它们不能通过 tab 完成。它们存在于路径上,但是,虽然包含的模块(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'>
也许有些东西没有正确处理.eggs?谢谢。
更新:跟进 gnibbler 的帖子,我发现 tab 补全在 completer.py 的第 633 行遇到异常:
try:
ret = self.matches[state].replace(magic_prefix,magic_escape)
return ret
except IndexError:
return None
但是是什么导致了失败...
更新:
In [5]: from Bea<tab_here>
*** COMPLETE: <Bea> (0)
matches: []
state: 0
所以这只是说匹配列表是一个空集:没有匹配。它仍然找不到模块。当我有时间的时候,我会尝试调查matches 在哪里获取它正在寻找的模块。
【问题讨论】:
-
你的意思是 import Be
不起作用?或 BeautifulSoup。 不起作用? -
前者。手动输入名称并导入后,模块成员的制表符补全启动。
-
同样的问题,在 Mac OS X 上使用 Python 2.6.2 和 IPython 0.10...
-
IndexError 表示状态不匹配。您可以尝试在异常处理程序中打印它们吗?
标签: python module ipython tab-completion enthought