Автозаполнение вкладки ipython не работает для импортированного модуля


82

Завершение вкладки в IPython не работает. Например,

import numpy
numpy.<tab>

просто добавляет вкладку.

import numpy
num<tab>

просто добавляет вкладку тоже. Не могли бы вы предложить возможные причины этой проблемы? Я использую Windows 7 и Python 2.6.5.


1
Решение, приведенное ниже, сработало для меня - сработало ли оно для вас? Если да, отметьте ответ как принятый.
bacar

У меня ничего ниже не работало. Установите последнюю версию pyreadline. Запуск ноутбука jupyter на Python 3.5.
Michael Szczepaniak

Если он работал, а затем перестал работать после того, как вы нажали несколько случайных клавиш, проверьте, не был ли тип ячейки случайно изменен с «Код» на что-то другое, например «Markdown» или «Raw NBConvert».
Сорин Постельнику

если вы только что установили новый модуль python, а ipython не выполняет автозаполнение импорта, перейдите сюда
Тревор Бойд Смит,

jediобновление с 0.17 до 0.18 содержит ошибки и отключает завершение вкладки IPython. Смотрите ответ от декабря 2020 года ниже.
Абель Чунг,

Ответы:


93

Убедитесь, что вы установили библиотеку pyreadline . Он необходим для завершения табуляции и других функций IPython - в Windows он не поставляется с пакетом IPython, и вам необходимо установить его отдельно -

> pip install pyreadline

1
@joaquin Я пытался установить это для Mac install gnureadline, но мне все еще не удалось завершить табуляцию, когда я делаю что-то вроде numpy.<tab>. Вы знаете, почему это так?
TheRealFakeNews 01

@AlanH Извините, я понятия не имею о MAC. Может быть, тебе стоит задать новый, конкретный вопрос.
Хоакин 01

1
К вашему сведению, если он не работает сразу (что было для меня), запустите новую консоль.
Алби

2
Добавление рекомендации использовать Anaconda или Miniconda для управления установками. Я только что установил ipython ( conda install ipython), и у меня не было проблем с завершением вкладки. Вы можете использовать его одновременно с pip.
Кенни

1
Я думаю, что этот ответ устарел, поскольку iPython не полагается на pyreadlines начиная с версии 5.0, а pyreadlines не разрабатывается с 2017 года - см. Ipython.org/pyreadline.html
Olsgaard

17

Если кто-то использует недавнюю 7.19.0версию, а автозаполнение не работает, попробуйте jediперейти на более раннюю версию 0.17.2:

pip install jedi==0.17.2

Подробнее см. Https://github.com/ipython/ipython/issues/12740 .


Это отражает статус-кво по состоянию на январь 2021 года. parsoПакет также необходимо будет понизить до 0.7.1.
Абель Чунг,

1
Понижение уровня джедаев до 0.17.2 сработало для меня
Августо

7

Возможно, ваш файл ipythonrc устарел. Попробуйте бежать

ipython -upgrade

10
-upgradeфлаг больше не поддерживается.
jsmedmar

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


3

Классический «пробовали ли вы выключить и снова включить?» У меня сработал.

pip uninstall ipython
pip install ipython


1

На данный момент на OSX установленный pip ipython не дает завершения табуляции, pyreadline release.py не работает .. что WFM:

easy_install ipython readline

YMMV.


1

Кто-то еще в StackOverflow разместил эту ссылку: http://www.vankouteren.eu/blog/2009/06/getting-ipython-readline-and-auto-completion-to-work-on-mac-os-x/

Это просто, easy_install readlineчем обнаружить, где было установлено яйцо чтения, и отредактировать скрипт ipython bin, чтобы использовать эту строку чтения:

  1. Установите "официальную" строку чтения: easy_install readline
  2. Узнай, где это. Посмотрите /Library/Python/site-packages/readline-*.eggили в вашем аналоге Virtualenv
  3. Узнайте, где находится ipython bin: which ipython
  4. Добавьте ОДНУ СТРОКУ в этот файл, добавив путь к яйцу для чтения сразу после import sysстроки.

Мой виртуальный скрипт 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')()
    )

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, ваша установка не удастся, когда придет время связать их и собрать яйца .. Надеюсь, это поможет другим!


0

Pyreadline необходим ipython. Установите pyreadline. Это было сделано в Windows 7. Получите pyreadline zip, pyreadline-master.zip , распакуйте. В папке PowerShell измените каталог на сжатый pyreadline, убедитесь, что python установлен в Path, и введите команду. python setup.py installЭто вызовет pyreadline в C: \ Python27 \ Lib \ site-packages


0

У меня была эта проблема, и я знал, что у меня установлен пакет для модуля, который я искал. Выполнение$ ipython --init решило проблему для меня.



0

Если вы используете записную книжку Jupyter и у вас по-прежнему работает автозаполнение вкладок после того, как вы попробовали все шаги, предложенные в публикации здесь, вы можете проверить, пытаетесь ли вы использовать автозаполнение вкладок в определении функции. Если ваши операторы импорта являются частью функции, как показано ниже, вы не получите автозаполнение вкладок. Вам нужно вынести операторы импорта за пределы функции, а также выполнить их один раз, прежде чем запрашивать автозаполнение для пакетов.

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

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

0

Я столкнулся с той же проблемой с библиотекой numpy. Проблема связана с конкретной версией ipython или jupyter notebook, и она решается простым обновлением ipython или jupyter. Если вы используете среду conda, такую ​​как anaconda или miniconda, обновите ipython в этой среде, используя

conda update ipython

В случае анаконды вам также необходимо обновить qtconsole

conda update qtconsole

Иногда анаконда ограничивает обновление ipython, затем попробуйте

conda update -all

Если вы не используете среду, обновите напрямую с помощью pip

pip update ipython
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.