IPython的标签只完成某些模块(IPython tab completes only some

2019-08-17 19:15发布

我使用Python和IPython中的EPD版本。 使用easy_install的安装一些模块之后,我注意到,虽然他们可以进口的,它们不能被标签完成。 它们存在的道路上,但同时包含的模块(pylab,readline的,数学), 可以完成,这些新的模块不能。

任何人都知道我应该是什么为找问题? 我检查了包在同一个地方的其他模块:

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的帖子跟进,我发现,标签打完工在行633例外completer.py在:

    try:
        ret = self.matches[state].replace(magic_prefix,magic_escape)
        return ret
    except IndexError:
        return None

但是,是什么原因造成的failiure ...

更新

In [5]: from Bea<tab_here>
*** COMPLETE: <Bea> (0)
matches: []
state: 0

所以这只是说,在比赛列表是空集:没有匹配。 它仍然没有找到该模块。 我会尽力调查,其中matches越来越它寻找当我有时间的模块。

Answer 1:

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

看来,IPython的与所有它可以找到模块一个简单的数据库sys.path 。 你安装一个新的模块每次你都要写神奇

In [1]: %rehashx

让IPython的再生它的数据库。 然后你就可以有新的模块TAB完成。



Answer 2:

在右边的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

也许,在取消它会给你一个线索



Answer 3:

本地安装, 无蛋模块可以有自己的名称标签完成的,在做的时候import ,但鸡蛋模块不能(IPython的0.10,Python的2.6.2,Mac OS X的)。

我会建议文件,IPython的功能请求/ bug报告!



文章来源: IPython tab completes only some modules