Автозаповнення вкладки `ipython` не працює на імпортованому модулі


82

Завершення вкладки на IPython, здається, не працює. Наприклад,

import numpy
numpy.<tab>

просто додає вкладку.

import numpy
num<tab>

просто додає також вкладку. Не могли б ви запропонувати деякі можливі причини цієї проблеми? У мене працює Windows 7 та Python 2.6.5.


1
Рішення, наведене нижче, спрацювало для мене - чи це для вас? Якщо так, то позначте відповідь прийнятою.
bacar

Ніщо нижче не працювало для мене. Майте останню піреадрілію. Запуск блокнота jupyter на python 3.5.
Michael Szczepaniak

Якщо він працював, а потім перестав працювати після натискання клавіш довільної клавіші, то перевірте, чи випадково тип комірки не змінився з "Код" на щось інше, наприклад "Маркдаун" або "Сире NBConvert".
Sorin Postelnicu

якщо ви щойно встановили новий модуль 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

@AlanH Вибачте, не маю уявлення про MAC. Можливо, вам слід відкрити нове, конкретне питання.
Хоакін

1
FYI, якщо це не спрацює відразу (що було для мене), запустіть нову консоль.
Елбі,

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

1
Я думаю, що ця відповідь застаріла, оскільки iPython не покладається на pyreadlines з версії 5.0, а pyreadlines не розробляється з 2017 року - Див. Ipython.org/pyreadline.html
Ольсгаард,

16

Якщо хтось користується останнім, 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

3

У мене була ця проблема. Я вирішив, знизивши пакет python-parso

зниження версії пакета python-parso (0.8.0-1 => 0.6.2-1)


1
для мене зниження з 0,8 до 0,7,1 зробило трюк
CIsForCookies

1

На сьогоднішній день, на OSX, встановлений pip ipython не дає завершення вкладки, pyreadline release.py зірвано

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ніж виявити, де було встановлено яйце readline, та відредагувати скрипт ipython bin, щоб використовувати цей readline:

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

Мій virtualenved скрипт 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 , unzip. У Powershell каталозі зміни в uzipped pyreadline, переконайтеся , що пітон встановлений в Path і введіть команду python setup.py installЦе intall pyreadline в C: \ python27 \ Lib \ сайт-пакети


0

У мене була ця проблема, і я знав, що у мене встановлено піп для шуканого модуля. Виконання $ ipython --initвирішило проблему для мене.



0

Якщо ви користуєтеся блокнотом Jupyter, але після того, як ви спробували всі кроки, запропоновані в цій статті, ви все-таки запрацювали автозаповнення Tab, можливо, ви захочете перевірити, чи не намагаєтесь ви використовувати автозавершення Tab у визначенні функції. Якщо ваші оператори імпорту є частиною функції, як показано нижче, ви не отримаєте автоматичне заповнення вкладки. Вам потрібно розмістити оператори імпорту поза функцією, а також виконати їх один раз, перш ніж запитувати про автоматичне заповнення пакетів.

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, і вона вирішується простим оновленням 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.