`ipython`选项卡自动完成功能不适用于导入的模块

时间:2010-04-08 22:10:15

标签: python ipython tab-completion

IPython上的标签完成似乎不起作用。例如,

import numpy
numpy.<tab>

只需添加一个标签。

import numpy
num<tab>

也添加了一个标签。你能否为这个问题提出一些可能的原因?我正在运行Windows 7和Python 2.6.5。

20 个答案:

答案 0 :(得分:90)

确保已安装pyreadline库。选项卡完成和其他IPython功能需要它 - 在Windows中它没有附带IPython包,你必须单独安装 -

> pip install pyreadline

答案 1 :(得分:66)

如果有人使用最近的 7.19.0 并且自动完成不起作用,请尝试将 jedi 降级为 0.17.2

pip install jedi==0.17.2

有关详细信息,请参阅 https://github.com/ipython/ipython/issues/12740

答案 2 :(得分:9)

您的ipythonrc文件可能已过期。 尝试运行

ipython -upgrade

答案 3 :(得分:9)

pip uninstall jedi --yes

pip install pyreadline

当前带有 Jupyter notebook 的 Ipython 不需要 jedi.. 所以你只需要用上面的命令卸载它。

我从here那里得到的。

答案 4 :(得分:6)

pip告诉我我安装了pyreadline 1.7.1版

C:\Users\me>pip freeze | grep readline
pyreadline==1.7.1

升级pyreadline为我解决了问题:

C:\Users\me>pip install --upgrade pyreadline

C:\Users\me>pip freeze | grep readline
pyreadline==2.0

答案 5 :(得分:3)

我遇到了这个问题。 我通过降级python-parso软件包来解决

降级python-parso软件包(0.8.0-1 => 0.6.2-1)

答案 6 :(得分:2)

经典的'你试过把它关掉再打开'给我工作。

pip uninstall ipython
pip install ipython

答案 7 :(得分:2)

这肯定会在我的情况下起作用

conda install ipython  
pip install jedi==0.17.2

答案 8 :(得分:1)

截至目前,在OSX上,pip安装的ipython没有给标签完成,pyreadline release.py被破坏了..什么是WFM:

easy_install ipython readline

因人而异。

答案 9 :(得分:1)

StackOverflow中的其他人发布了此链接:http://www.vankouteren.eu/blog/2009/06/getting-ipython-readline-and-auto-completion-to-work-on-mac-os-x/

它基本上easy_install readline比发现readline egg安装位置并编辑ipython bin脚本以使用此readline:

  1. 安装“官方”标题:easy_install readline
  2. 发现它的位置。查看/Library/Python/site-packages/readline-*.egg或您的Virtualenv对应
  3. 了解ipython bin的位置:which ipython
  4. 在此文件中添加一行,在import sys行之后添加readline egg路径。
  5. 我的虚拟ipython bin脚本开始运作如下:

    #!/Users/alanjds/src/git/cervejeiras/venv/cervejeiras-lfs/bin/python
    # EASY-INSTALL-ENTRY-SCRIPT: 'ipython==0.13.1','console_scripts','ipython'
    __requires__ = 'ipython==0.13.1'
    import sys
    
    ### ONLY LINE ADDED:
    sys.path.insert(0, '/Users/alanjds/src/git/cervejeiras/venv/cervejeiras-lfs/lib/python2.6/site-packages/readline-6.2.4.1-py2.6-macosx-10.6-fat.egg')
    ####
    
    from pkg_resources import load_entry_point
    
    if __name__ == '__main__':
        sys.exit(
            load_entry_point('ipython==0.13.1', 'console_scripts', 'ipython')()
        )
    

答案 10 :(得分:1)

我意识到这是一个非常古老的问题,但上面的答案都没有对我有用(这是你在谷歌提出这种性质问题时的第一个打击)。

我应该提到这不是Windows独有的,我遇到运行CentOS 6.5和Python 2.7的问题

这是我做的:

apt-get/yum install ncurses-devel
#If you want history in iPython:
apt-get/yum install sqlite-devel
easy_install ipython readline
ipython

In [1]: from 
Display all 391 possibilities? (y or n)

如果您没有-devel软件包,那么当需要链接它们并构建鸡蛋时,您的安装将会失败。希望这有助于其他人!

答案 11 :(得分:0)

要检查 ipython 和它使用的模块是否匹配,请运行 pip check ipython
对于我在 2021 年 7 月使用 ipython 7.25 的配置,这给出了一个很好的明确警告:

<块引用>

ipykernel 6.0.1 有要求 importlib-metadata<4; python_version < "3.8.0",但你有 importlib-metadata 4.6.0。

您当然可能会看到不同的警告—— 这只是一个例子,与 tab 补全无关。

然后将其降级,例如 pip install 'importlib-metadata<4' # 不要忘记'引号'

<块引用>

成功卸载importlib-metadata-4.6.0
成功安装 importlib-metadata-3.10.1


也有用:
  • pip list -- $PYTHONPATH 中的所有内容,包括版本和位置
  • pip check -- 一切
  • pip show ipython --
<块引用>

需要:traitlets、pygments、jedi、decorator、pickleshare、pexpect、appnope、matplotlib-inline、setuptools、prompt-toolkit、backcall

但要查看所需的版本,您必须查看 .../site-packages/ipython-*.dist-info/METADATA

答案 12 :(得分:0)

我通过安装 jedi-language-server 解决了我的问题:

pip install -U jedi-language-server

PS,我在虚拟环境中从 Conda 安装了 Ipython,并在激活环境时使用了上述命令。

答案 13 :(得分:0)

我在numpy库中遇到了同样的问题。问题出在特定版本的ipython或jupyter笔记本上,只需更新ipython或jupyter即可解决。 如果您使用的是cona环境(例如anaconda或miniconda),请使用

在该环境中更新ipython
conda update ipython

如果是水蟒,还需要更新qtconsole

conda update qtconsole

有时anaconda会限制ipython的更新,然后尝试

conda update -all

如果您不使用环境,则可以使用pip直接更新

pip update ipython

答案 14 :(得分:0)

降级iPython可以解决问题。

pip install --upgrade ipython==5.8.0

答案 15 :(得分:0)

如果您使用Jupyter笔记本,并且在尝试了此处帖子中建议的所有步骤后仍然可以使Tab自动完成工作,您可能需要检查是否尝试在函数定义中使用Tab自动完成。如果您的import语句是函数的一部分,如下所示,您将无法获得Tab自动完成。您需要将import语句放在函数外部,并在要求在软件包上自动完成之前执行它们一次。

def myfunction():
    import pandas as pd
    import numpy as np

    a = pd.DataFrame(np.random.normal(1,3, (4,4))
    return a

答案 16 :(得分:0)

在我的情况下我必须mv ~/.ipython{,.bak}

答案 17 :(得分:0)

我遇到了这个问题,并且知道我为我正在寻找的模块安装了点子。执行$ ipython --init为我解决了问题。

答案 18 :(得分:0)

ipython需要Pyreadline。安装pyreadline。这是在Windows 7中完成的。获取pyreadline zip,pyreadline-master.zip,解压缩。在powershell中将目录更改为uzipped pyreadline,确保在Path中设置python,并输入命令python setup.py install这将在C:\ Python27 \ Lib \ site-packages

中输入pyreadline

答案 19 :(得分:-1)

您的 ipython 和 jedi 可能彼此不兼容。尝试使用这个:

pip install -U ipython==7.20