Die automatische Vervollständigung der Registerkarte "ipython" funktioniert bei importierten Modulen nicht


80

Die Tab-Vervollständigung unter IPython scheint nicht zu funktionieren. Zum Beispiel,

import numpy
numpy.<tab>

fügt einfach eine Registerkarte hinzu.

import numpy
num<tab>

Fügt einfach auch einen Tab hinzu. Könnten Sie bitte einige mögliche Ursachen für dieses Problem vorschlagen? Ich verwende Windows 7 und Python 2.6.5.


1
Die folgende Lösung hat bei mir funktioniert - hat sie bei Ihnen funktioniert? Wenn ja, sollten Sie die akzeptierte Antwort markieren.
Bacar

Nichts unten hat für mich funktioniert. Habe die neueste Pyreadline. Ausführen von Jupyter Notebook unter Python 3.5.
Michael Szczepaniak

Falls es funktioniert hat und dann nach dem Drücken einiger zufälliger Tasten nicht mehr funktioniert, überprüfen Sie, ob der Zelltyp versehentlich von "Code" in etwas anderes geändert wurde, z. B. "Markdown" oder "Raw NBConvert".
Sorin Postelnicu

Wenn Sie gerade ein neues Python-Modul installiert haben und ipython keine automatische Vervollständigung importiert, klicken Sie hier
Trevor Boyd Smith

Antworten:


93

Stellen Sie sicher, dass Sie die Pyreadline- Bibliothek installiert haben . Es wird für die Tab-Vervollständigung und andere IPython-Funktionen benötigt - in Windows wird das IPython-Paket nicht mitgeliefert und Sie müssen es separat installieren -

> pip install pyreadline

1
@joaquin Ich habe versucht, dies für Mac mit zu installieren install gnureadline, aber ich bin immer noch nicht in der Lage, die Tab-Vervollständigung zu erhalten, wenn ich so etwas mache numpy.<tab>. Weißt du warum das so ist?
TheRealFakeNews

@ AlanH Sorry, keine Ahnung von MAC. Vielleicht sollten Sie eine neue, spezifische Frage öffnen.
Joaquin

1
Zu Ihrer Information, wenn es nicht sofort funktioniert (was bei mir der Fall war), starten Sie die neue Konsole.
Alby

2
Hinzufügen einer Empfehlung zur Verwendung von Anaconda oder Miniconda zum Verwalten von Installationen. Ich habe gerade ipython ( conda install ipython) installiert und hatte keine Probleme mit der Tab-Vervollständigung. Sie können es gleichzeitig mit pip verwenden.
Kenny

1
Ich denke, diese Antwort ist veraltet, da iPython seit Version 5.0 nicht mehr auf Pyreadlines basiert und Pyreadlines seit 2017 nicht mehr entwickelt wurde - siehe ipython.org/pyreadline.html
Olsgaard

7

Ihre ipythonrc-Datei ist möglicherweise veraltet. Versuche zu rennen

ipython -upgrade

10
Das -upgradeFlag wird nicht mehr unterstützt.
Jsmedmar

6

pip sagte mir, ich hätte Pyreadline Version 1.7.1 installiert

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

Das Upgrade hat pyreadlinees für mich behoben:

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

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

3

Der Klassiker "Haben Sie versucht, es aus- und wieder einzuschalten" hat bei mir funktioniert.

pip uninstall ipython
pip install ipython

3

Ich hatte dieses Problem. Ich habe durch Downgrade des Python-Parso-Pakets gelöst

Herabstufung des Python-Parso-Pakets (0.8.0-1 => 0.6.2-1)


1
Für mich war ein Downgrade von 0.8.0 auf 0.7.1 der Trick
CIsForCookies

2

Das Herabstufen von iPython hat es geschafft.

pip install --upgrade ipython==5.8.0

1

Unter OSX bietet pip installiertes ipython derzeit keine Tab-Vervollständigung. Pyreadline release.py ist kaputt. Was für ein WFM:

easy_install ipython readline

YMMV.


1

Jemand anderes in StackOverflow hat diesen Link gepostet: http://www.vankouteren.eu/blog/2009/06/getting-ipython-readline-and-auto-completion-to-work-on-mac-os-x/

Es ist einfach, easy_install readlineals herauszufinden, wo das Readline-Ei installiert wurde, und das ipython bin-Skript zu bearbeiten, um diese Readline zu verwenden:

  1. Installieren Sie die "offizielle" Readline: easy_install readline
  2. Entdecken Sie, wo es ist. Schauen Sie sich /Library/Python/site-packages/readline-*.eggoder in Ihrem Virtualenv-Gegenstück an
  3. Entdecken Sie, wo sich ipython bin befindet: which ipython
  4. Fügen Sie dieser Datei EINE ZEILE hinzu und fügen Sie direkt nach der import sysZeile den Readline-Ei-Pfad hinzu.

Mein virtualenved ipython bin script hat wie folgt funktioniert:

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

Mir ist klar, dass dies eine wirklich alte Frage ist, aber keine der oben genannten Antworten hat bei mir funktioniert (und dies ist der erste Treffer, den Sie erhalten, wenn Sie eine Frage dieser Art googeln).

Ich sollte erwähnen, dass dies NICHT nur für Windows gilt. Ich hatte das Problem, CentOS 6.5 und Python 2.7 auszuführen

Folgendes habe ich getan:

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)

Wenn Sie die -devel-Pakete nicht haben, schlägt Ihre Installation fehl, wenn es an der Zeit ist, sie zu verknüpfen und die Eier zu erstellen. Ich hoffe, dies hilft anderen!


0

Pyreadline wird von ipython benötigt. Installieren Sie pyreadline. Dies wurde in Windows 7 durchgeführt. Holen Sie sich pyreadline zip, pyreadline-master.zip , unzip. Stellen Sie im Powershell-Änderungsverzeichnis in uzipped pyreadline sicher, dass Python in Path festgelegt ist, und geben Sie den Befehl ein. python setup.py installDadurch wird pyreadline in C: \ Python27 \ Lib \ site-packages installiert


0

Ich hatte dieses Problem und wusste, dass ich den Pip für das Modul installiert hatte, das ich suchte. Durchführen $ ipython --initlöste das Problem für mich.



0

Wenn Sie das Jupyter-Notizbuch verwenden und die automatische Vervollständigung von Tabs immer noch funktioniert hat, nachdem Sie alle im Beitrag hier vorgeschlagenen Schritte ausgeführt haben, möchten Sie möglicherweise überprüfen, ob Sie versuchen, die automatische Vervollständigung von Tabs innerhalb einer Funktionsdefinition zu verwenden. Wenn Ihre Importanweisungen Teil der folgenden Funktion sind, wird die automatische Vervollständigung der Registerkarte nicht angezeigt. Sie müssen die Importanweisungen außerhalb der Funktion platzieren und sie auch einmal ausführen, bevor Sie die automatische Vervollständigung der Pakete anfordern.

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

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

0

Ich hatte das gleiche Problem mit der Numpy-Bibliothek. Das Problem betrifft die jeweilige Version von ipython oder jupyter notebook und wird durch einfaches Aktualisieren von ipython oder jupyter behoben. Wenn Sie eine Conda-Umgebung wie Anaconda oder Miniconda verwenden, aktualisieren Sie ipython in dieser Umgebung mithilfe von

conda update ipython

Im Falle einer Anakonda müssen Sie auch die qtconsole aktualisieren

conda update qtconsole

Manchmal schränkt Anaconda das Update von Ipython ein und versucht es dann

conda update -all

Wenn Sie keine Umgebung verwenden, aktualisieren Sie diese direkt mit pip

pip update ipython
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.