Autouzupełnianie karty `ipython` nie działa na zaimportowanym module


82

Uzupełnianie tabulatorów w IPythonie wydaje się nie działać. Na przykład,

import numpy
numpy.<tab>

po prostu dodaje kartę.

import numpy
num<tab>

po prostu dodaje też kartę. Czy mógłbyś zasugerować możliwe przyczyny tego problemu? Używam Windows 7 i Python 2.6.5.


1
Poniższe rozwiązanie zadziałało dla mnie - czy zadziałało dla Ciebie? Jeśli tak, zaznacz odpowiedź jako zaakceptowaną.
Bacar

Nic poniżej nie działało dla mnie. Miej najnowszy pyreadline. Uruchamianie notatnika jupyter w Pythonie 3.5.
Michael Szczepaniak

Jeśli to działało, a potem przestało działać po naciśnięciu kilku przypadkowych klawiszy, sprawdź, czy typ komórki nie został przypadkowo zmieniony z „Kod” na coś innego, np. „Markdown” lub „Raw NBConvert”.
Sorin Postelnicu

jeśli właśnie zainstalowałeś nowy moduł Pythona, a ipython nie importuje autouzupełniania, przejdź tutaj
Trevor Boyd Smith

jediaktualizacja z 0.17 do 0.18 jest błędna i wyłącza uzupełnianie tabulacji w IPythonie. Zobacz odpowiedź z grudnia 2020 roku poniżej.
Abel Cheung

Odpowiedzi:


93

Upewnij się, że zainstalowałeś bibliotekę pyreadline . Jest potrzebny do uzupełniania zakładek i innych funkcji IPython - w systemie Windows nie jest dostarczany z pakietem IPython i musisz go zainstalować osobno -

> pip install pyreadline

1
@joaquin Próbowałem zainstalować to na Macu przy użyciu install gnureadline, ale nadal nie mogę uzyskać zakończenia zakładki, gdy robię coś takiego numpy.<tab>. Czy wiesz, dlaczego tak jest?
TheRealFakeNews

@AlanH Przepraszamy, nie mam pojęcia o MAC. Może powinieneś otworzyć nowe, konkretne pytanie.
joaquin

1
FYI, jeśli nie działa od razu (co było w moim przypadku), uruchom nową konsolę.
Alby

2
Dodanie zalecenia używania Anaconda lub Miniconda do zarządzania instalacjami. Właśnie zainstalowałem ipython ( conda install ipython) i nie miałem żadnych problemów z wypełnianiem kart. Możesz go używać jednocześnie z pip.
Kenny,

1
Myślę, że ta odpowiedź jest nieaktualna, ponieważ iPython nie opiera się na pyreadlines od wersji 5.0, a pyreadlines nie został opracowany od 2017 r. - patrz ipython.org/pyreadline.html
Olsgaard


7

Twój plik ipythonrc może być nieaktualny. Spróbuj biegać

ipython -upgrade

10
-upgradeflaga nie jest już wspierane.
jsmedmar

6

pip powiedział mi, że mam zainstalowaną wersję pyreadline 1.7.1

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

Aktualizacja pyreadlinenaprawiła to dla mnie:

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

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


3

Klasyczne „czy próbowałeś go wyłączyć i ponownie włączyć” zadziałało dla mnie.

pip uninstall ipython
pip install ipython


1

W tej chwili, na OSX, pip zainstalowany ipython nie daje uzupełniania tabulatorów, pyreadline release.py jest zepsuty ... co WFM:

easy_install ipython readline

YMMV.


1

Ktoś inny w StackOverflow opublikował ten link: http://www.vankouteren.eu/blog/2009/06/getting-ipython-readline-and-auto-completion-to-work-on-mac-os-x/

Jest to po prostu easy_install readlineodkrycie, gdzie zostało zainstalowane jajko readline i zmodyfikowanie skryptu ipython bin, aby użyć tego readline:

  1. Zainstaluj „oficjalną” readline: easy_install readline
  2. Odkryj, gdzie to jest. Spójrz na /Library/Python/site-packages/readline-*.egglub w swoim odpowiedniku Virtualenv
  3. Odkryj, gdzie jest ipython bin: which ipython
  4. Dodaj JEDNĄ LINIĘ do tego pliku, dodając bezpośrednio po niej ścieżkę do jajka readline import sys linii.

Mój wirtualny skrypt ipython bin zaczął działać następująco:

#!/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

Zdaję sobie sprawę, że to naprawdę stare pytanie, ale żadna z powyższych odpowiedzi nie zadziałała dla mnie (i to jest pierwsze trafienie, które otrzymujesz, gdy wyszukujesz w Google pytanie tego rodzaju).

Powinienem wspomnieć, że NIE jest to wyłączne dla Windows, miałem problem z uruchomieniem CentOS 6.5 i Python 2.7

Oto co zrobiłem:

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)

Jeśli nie masz pakietów -devel, instalacja zakończy się niepowodzeniem, gdy nadejdzie czas na ich połączenie i zbudowanie jaj. Mam nadzieję, że to pomoże innym!


0

Pyreadline jest potrzebny ipythonowi. Zainstaluj pyreadline. Zrobiono to w systemie Windows 7. Pobierz pyreadline zip, pyreadline-master.zip , rozpakuj. W PowerShell zmień katalog na uzipped pyreadline, upewnij się, że Python jest ustawiony w Path i wprowadź polecenie python setup.py installSpowoduje to zainstalowanie pyreadline w C: \ Python27 \ Lib \ site-packages


0

Miałem ten problem i wiedziałem, że mam zainstalowany pip dla szukanego modułu. Wykonanie $ ipython --initrozwiązało problem za mnie.



0

Jeśli korzystasz z notatnika Jupyter, a po wykonaniu wszystkich kroków sugerowanych w tym poście nadal działało automatyczne uzupełnianie kart, możesz sprawdzić, czy próbujesz użyć automatycznego uzupełniania kart w definicji funkcji. Jeśli twoje instrukcje importu są częścią funkcji takiej jak poniżej, nie otrzymasz autouzupełniania Tab. Musisz umieścić instrukcje import poza funkcją, a także wykonać je raz, zanim poprosisz o automatyczne uzupełnianie pakietów.

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

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

0

Napotkałem ten sam problem z biblioteką numpy. Problem dotyczy konkretnej wersji notebooka ipython lub jupyter i można go rozwiązać, po prostu aktualizując ipython lub jupyter. Jeśli używasz środowiska Conda, takiego jak Anaconda lub Miniconda, zaktualizuj ipython w tym środowisku przy użyciu

conda update ipython

W przypadku anacondy musisz również zaktualizować qtconsole

conda update qtconsole

Czasami anakonda ogranicza aktualizację ipython, a następnie spróbuj

conda update -all

Jeśli nie używasz środowiska, zaktualizuj bezpośrednio za pomocą pip

pip update ipython

0

To zdecydowanie powinno działać tak, jak działało w moim przypadku

conda install ipython  
pip install jedi==0.17.2
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.