Come ottenere il completamento automatico nel notebook Jupyter senza utilizzare la scheda?


100

Vorrei avere una funzionalità di completamento automatico nei notebook, ad esempio quando digito qualcosa, viene visualizzato un menu a discesa, con tutte le cose possibili che potrei digitare, senza dover premere il pulsante di tabulazione. C'è una cosa del genere?

Provai :

% config IPCompleter.greedy = True

ma questo richiede la pressione del pulsante tab

Risposte:


91

C'è un'estensione chiamata Hinterland per jupyter, che visualizza automaticamente il menu a discesa durante la digitazione. Ci sono anche altre utili estensioni.

Per installare le estensioni, puoi seguire la guida su questo repository GitHub . Per attivare facilmente le estensioni, potresti voler utilizzare il configuratore delle estensioni .


3
Se utilizzo una macchina remota su cui gira un notebook jupyter e la utilizzo dalla mia macchina locale tramite browser, dove devo installare le estensioni?
thebeancounter

2
@thebeancounter Ho l'estensione installata solo in locale, cioè sulla macchina da cui accedo al notebook tramite browser. Non ho estensioni installate sulla mia macchina remota che esegue il notebook Jupyter.
PhysicsGuy

5
Ho installato hinterland e completerà automaticamente solo le cose di base di Python ma non completerà automaticamente le funzioni del modulo (ad esempio pd, np, ecc.) Come posso fare in modo che completi automaticamente anche quelle come pycharm?
thebeancounter

@thebeancounter Per me hinterland funziona con moduli come numpy e pandas. Anche se eseguo un'importazione import numpy as npe un tipo relativi np, vengono visualizzati dei suggerimenti (ad esempio np.abs). Per risolvere questo problema, sono necessari maggiori dettagli sulla configurazione. Suggerirei di aprire una domanda separata per il tuo problema.
PhysicsGuy

2
Per coloro che non hanno familiarità con Jupyter Notebook come me, 1) segui le istruzioni ufficiali per installare queste cose: jupyter-contrib-nbextensions.readthedocs.io/en/latest/… 2) installa l'interfaccia utente del configuratore del browser, seguendo: github.com / Jupyter-contrib / jupyter_nbextensions_configurator 3) Apri il notebook jupyter usando il comando nel terminale:jupyter notebook
Jason

33

L'auto-completamento con Jupyter Notebook è così debole, anche con l'estensione dell'hinterland. Grazie per l'idea del completamento automatico del codice basato sul deep learning. Ho sviluppato un'estensione per notebook Jupyter basata su TabNine che fornisce il completamento automatico del codice basato su Deep Learning. Ecco il link Github del mio lavoro: jupyter-tabnine .

È ora disponibile sull'indice pypi . Emetti semplicemente i seguenti comandi, quindi divertiti :)

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

demo


Funziona alla grande! Ma ha ucciso la mia nuova riga (Maiusc + Invio) non funziona più in Jupyter Notebook. Qualche soluzione alternativa per questo?
Harvey

@ Harvey Ciao, blocco il primo Enterper evitare malfunzionamenti. Se viene visualizzata la finestra dei suggerimenti, la prima Enterattiverà la chiusura della finestra. Per ora, se vuoi una nuova riga quando viene mostrato il suggerimento, puoi semplicemente emettere Entere poi emettere Enter(o Shift+ Enterse vuoi eseguire la cella corrente e crearne una nuova.) Non sono sicuro che sia un buon design. Fammi sapere le tue opinioni e i tuoi suggerimenti.
Wenmin Wu

Sulla tastiera del mio laptop ´fn´ + ´Enter´ funziona. Mi sto abituando. Il comportamento previsto era Alt + Invio per la nuova riga nella cella e Maiusc + Invio per l'esecuzione. Comunque considerando quanto sia utile questo plugin questa è solo una cosa minore. Grazie!
Harvey

Nel caso in cui si possa avere l' Permission deniederrore durante il tentativo di installazione per jupyter, è sufficiente aggiungere --usercon il comando jupyter install.
Yuen Tau,

1
Anche un avviso gentile: TabNine può occupare una grande quantità di memoria e risorse della CPU. Nel mio caso, eseguo il notebook jupyter da WSL (Ubuntu 18.04) e TabNine occupa circa 1,5 GB di memoria. La memoria utilizzata può scendere a ~ 200 MB se si termina l'attività dal task manager e TabNine si avvierà automaticamente la prossima volta che si digita il notebook jupyter. Maggiori dettagli su github.com/zxqfl/TabNine/issues/43 .
Yuen Tau,

11

Come accennato da @physicsGuy sopra, puoi usare l'estensione hinterland. Semplici passaggi per farlo.

Installazione di nbextension utilizzando conda forge channel. Esegui semplicemente il comando seguente nel terminale conda:

conda install -c conda-forge jupyter_nbextensions_configurator

Passaggio successivo abilitazione dell'estensione dell'entroterra. Esegui il comando seguente nel terminale conda:

jupyter nbextension enable hinterland/hinterland

Ecco fatto.


5
Enabling notebook extension hinterland/hinterland... - Validating: problems found: - require? X hinterland/hinterlandQuesto è l'errore nel farlo
Darshu Bc

esegui questi due comandi jupyter contrib nbextension install --systeme jupyter contrib nbextension install --userpoi questo per vedere l'elencojupyter nbextension list
PiotrK

8

Senza farlo %config IPCompleter.greedy=Truedopo aver importato un pacchetto come numpy o pandas in questo modo; import numpy as np import pandas as pd.

Quindi si digita pd.quindi si tocca il pulsante scheda che mette in evidenza tutti i metodi possibili da utilizzare in modo molto semplice e diretto.


7

Sto usando Jupiter Notebook 5.6.0. Qui, per ottenere l'autosuggestione, sto solo premendo il tasto Tab dopo aver inserito almeno un carattere.

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

Per ottenere i metodi e le proprietà all'interno della libreria importata usa lo stesso tasto Tab con Alice

  import numpy as np

  np. --> Hit Tab key

1

Aggiungi quanto segue alle preferenze dell'utente della tastiera su jupyter lab (Impostazioni-> Editor di sistema avanzato)

{
    "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"
        }

    ]
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.