IPython选项卡仅完成部分模块

IPython选项卡仅完成部分模块,python,module,ipython,tab-completion,enthought,Python,Module,Ipython,Tab Completion,Enthought,我正在使用python和IPython的EPD版本。在使用easy_install安装一些模块之后,我注意到,尽管可以导入它们,但它们无法完成。它们存在于路径上,但是,虽然包含的模块(pylab、readline、math)可以完成,但这些新模块无法完成 有人知道我应该调查什么来发现问题吗?我已检查包是否与其他模块位于同一位置: In [1]: import pylab In [2]: pylab Out[2]: <module 'pylab' from '/Library/Framew

我正在使用python和IPython的EPD版本。在使用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'>
但是是什么导致了失败

更新

In [5]: from Bea<tab_here>
*** COMPLETE: <Bea> (0)
matches: []
state: 0
[5]中的
:来自Bea
***完成:(0)
匹配项:[]
州:0

这只是说匹配项列表是一个空集:没有匹配项。它仍然没有找到模块。当我有时间时,我将尝试调查
匹配的地方
正在获取它要查找的模块。

在Ipython/completer.py的末尾是以下代码:


除:
#从IPython.ultraTB导入自动格式化TB;#dbg
#tb=自动格式化的tb(“详细”);tb()#dbg
#如果完成失败,不要打扰用户。 一无所获

也许取消注释会给你一个线索,在本地安装的非egg模块可以在执行导入时完成名称选项卡,但egg模块不能(IPython 0.10、Python 2.6.2、Mac OS X)


我建议向IPython提交功能请求/错误报告

在我厌倦了这种行为之后,我昨天找到了这个问题的答案

IPython似乎有一个简单的数据库,其中包含它在
sys.path
中可以找到的所有模块。每次你安装一个新的模块,你必须写魔术

In [1]: %rehashx

这样IPython就可以重新生成它的数据库。然后,您可以完成新模块的制表符。

您的意思是导入Be不起作用吗?或是美丽的乌苏。不起作用?前者。手工输入名称并导入后,模块成员的制表符补全开始生效。这里的问题与Mac OS X上的Python 2.6.2和IPython 0.10相同。索引器将指示状态不匹配。你能试着在异常处理程序中打印它们吗?运气不好。没有什么是“冗长的”缺乏完成。

        except:
            #from IPython.ultraTB import AutoFormattedTB; # dbg
            #tb=AutoFormattedTB('Verbose');tb() #dbg
# If completion fails, don't annoy the user. return None
In [1]: %rehashx