Wie bekomme ich Autovervollständigung in Jupyter Notebook ohne Tab?

100

Ich möchte eine automatische Vervollständigungsfunktion in Notizbüchern erhalten, dh wenn ich etwas eingebe, wird ein Dropdown-Menü mit allen möglichen Dingen angezeigt, die ich eingeben kann, ohne die Tabulatortaste drücken zu müssen. Gibt es so etwas?

Ich habe es versucht :

% config IPCompleter.greedy = True

Dazu muss jedoch die Tabulatortaste gedrückt werden

physicsnoob1000
quelle

Antworten:

91

Es gibt eine Erweiterung namens Hinterland für Jupiter, die beim Tippen automatisch das Dropdown-Menü anzeigt. Es gibt auch einige andere nützliche Erweiterungen.

Um Erweiterungen zu installieren, können Sie der Anleitung auf diesem Github-Repo folgen . Um Erweiterungen einfach zu aktivieren, können Sie den Erweiterungskonfigurator verwenden .

PhysikGuy
quelle
3
Wo soll ich die Erweiterungen installieren, wenn ich einen Remote-Computer verwende, auf dem das Jupyter-Notebook ausgeführt wird, und ich ihn von meinem lokalen Computer über den Browser verwende?
Thebeancounter
2
@thebeancounter Ich habe die Erweiterung nur lokal installiert, dh auf dem Computer, auf dem ich über einen Browser auf das Notebook zugreife. Ich habe keine Erweiterungen auf meinem Remote-Computer installiert, auf dem das Jupyter-Notebook ausgeführt wird.
PhysikGuy
5
Ich habe Hinterland installiert und es wird nur grundlegende Python-Inhalte automatisch vervollständigen, aber Modulfunktionen (z. B. pd, np usw.) werden nicht automatisch vervollständigt. Wie kann ich dafür sorgen, dass auch solche wie pycharm automatisch vervollständigt werden?
Thebeancounter
@thebeancounter Für mich arbeitet Hinterland mit Modulen wie Numpy und Pandas. Selbst wenn ich einen relativen Import import numpy as npund Typ mache np, werden Vorschläge angezeigt (z. B. np.abs). Um dieses Problem zu beheben, sind weitere Details zu Ihrem Setup erforderlich. Ich würde vorschlagen, eine separate Frage für Ihr Problem zu öffnen.
PhysikGuy
2
Für diejenigen, die mit Jupyter Notebook wie mir nicht vertraut sind, 1) befolgen Sie die offiziellen Anweisungen zum Installieren dieser Dinge: jupyter-contrib-nbextensions.readthedocs.io/en/latest/… 2) Installieren Sie die Benutzeroberfläche des Browser-Konfigurators wie folgt: github.com / Jupyter-contrib / jupyter_nbextensions_configurator 3) Öffnen Sie das Jupyter-Notizbuch mit dem Befehl im Terminal:jupyter notebook
Jason
33

Die automatische Vervollständigung mit Jupyter Notebook ist selbst bei der Erweiterung des Hinterlandes so schwach. Vielen Dank für die Idee der Deep-Learning-basierten automatischen Vervollständigung von Code. Ich habe eine Jupyter Notebook-Erweiterung basierend auf TabNine entwickelt, die eine automatische Vervollständigung des Codes basierend auf Deep Learning bietet. Hier ist der Github-Link meiner Arbeit: jupyter-tabnine .

Es ist jetzt im Pypi-Index verfügbar . Geben Sie einfach die folgenden Befehle ein und genießen Sie es :)

pip3 install jupyter-tabnine
jupyter nbextension install --py jupyter_tabnine
jupyter nbextension enable --py jupyter_tabnine
jupyter serverextension enable --py jupyter_tabnine

Demo

Wenmin Wu
quelle
Funktioniert super! Aber es hat meine neue Zeile getötet (Umschalt + Eingabetaste) funktioniert in Jupyter Notebook nicht mehr. Irgendeine Problemumgehung dafür?
Harvey
@ Harvey Hallo, ich blockiere die erste Enter, um Fehlbedienungen zu vermeiden. Wenn das Hinweisfenster angezeigt Enterwird, löst das erste das Schließen des Fensters aus. Wenn Sie eine neue Zeile wünschen, wenn der Hinweis angezeigt wird, können Sie sie nur ausgeben Enterund dann ausgeben Enter(oder Shift+, Enterwenn Sie die aktuelle Zelle ausführen und eine neue erstellen möchten). Ich bin mir nicht sicher, ob es sich um ein gutes Design handelt. Lassen Sie mich Ihre Fälligkeiten und Vorschläge wissen.
Wenmin Wu
Auf meiner Laptoptastatur funktioniert ´fn´ + ´Enter´. Ich gewöhne mich an als. Das erwartete Verhalten war Alt + Eingabetaste für neue Zeile in der Zelle und Umschalt + Eingabetaste für die Ausführung. Wie auch immer, wenn man bedenkt, wie nützlich dieses Plugin ist, ist dies nur eine Kleinigkeit. Danke dir!
Harvey
Falls Permission deniedbeim Versuch, jupyter zu installieren, der Fehler auftritt, fügen Sie ihn einfach --usermit dem Befehl jupyter install hinzu.
Yuen Tau
1
Auch eine nette Warnung: TabNine kann eine große Menge an Speicher und CPU-Ressourcen beanspruchen. In meinem Fall starte ich ein Jupyter-Notebook über die WSL (Ubuntu 18.04) und TabNine belegt ~ 1,5 GB Speicher. Der verwendete Speicher kann auf ~ 200 MB sinken, wenn Sie die Aufgabe über den Task-Manager beenden und TabNine sich beim nächsten Eingeben in Ihr Jupyter-Notizbuch automatisch selbst startet. Weitere Informationen finden Sie unter github.com/zxqfl/TabNine/issues/43 .
Yuen Tau
11

Wie oben von @physicsGuy erwähnt, können Sie die Hinterlanderweiterung verwenden. Einfache Schritte, um es zu tun.

Installation von nbextension über den Conda Forge-Kanal. Führen Sie einfach den folgenden Befehl im conda terminal aus:

conda install -c conda-forge jupyter_nbextensions_configurator

Nächster Schritt zur Erweiterung des Hinterlandes. Führen Sie den folgenden Befehl im Conda-Terminal aus:

jupyter nbextension enable hinterland/hinterland

Das war's, fertig.

Sanchit Kumar
quelle
5
Enabling notebook extension hinterland/hinterland... - Validating: problems found: - require? X hinterland/hinterlandDies ist der Fehler dabei
Darshu Bc
Führen Sie diese beiden Befehle aus jupyter contrib nbextension install --systemund jupyter contrib nbextension install --userdann diese, um die Liste jupyter nbextension list
anzuzeigen
8

Ohne dies zu tun, %config IPCompleter.greedy=Truenachdem Sie ein Paket wie numpy oder pandas auf diese Weise importiert haben; import numpy as np import pandas as pd.

Dann pd.tippen Sie ein und tippen auf die Registerkarte. Daraufhin werden alle möglichen Methoden angezeigt, die Sie ganz einfach und unkompliziert verwenden können.

Micah Timileyin
quelle
7

Ich benutze Jupiter Notebook 5.6.0. Um die Autosuggestion zu erhalten, drücke ich nur die Tabulatortaste, nachdem ich mindestens ein Zeichen eingegeben habe.

 **Example:** Enter character `p` and hit Tab.

Um die Methoden und Eigenschaften in der importierten Bibliothek abzurufen, verwenden Sie dieselbe Tabulatortaste wie Alice

  import numpy as np

  np. --> Hit Tab key
Hearaman
quelle
1

Fügen Sie Folgendes zu Ihren Tastaturbenutzereinstellungen in jupyter lab hinzu (Einstellungen-> Erweiterter Systemeditor)

{
    "shortcuts":[
        {
            "command": "completer:invoke-file",
            "keys": [
                "Ctrl Space"
            ],
            "selector": ".jp-FileEditor .jp-mod-completer-enabled"
        },
        {
            "command": "completer:invoke-file",
            "keys": [
                "Ctrl Space"
            ],
            "selector": ".jp-FileEditor .jp-mod-completer-enabled"
        },
        {
            "command": "completer:invoke-notebook",
            "keys": [
                "Ctrl Space"
            ],
            "selector": ".jp-Notebook.jp-mod-editMode .jp-mod-completer-enabled"
        }

    ]
}
Pravin Kumar
quelle