Comment obtenir la saisie semi-automatique dans le notebook Jupyter sans utiliser l'onglet?


102

Je voudrais avoir une fonction de saisie semi-automatique dans les cahiers, c'est-à-dire que lorsque je tape quelque chose, un menu déroulant apparaît, avec toutes les choses que je pourrais taper, sans avoir à appuyer sur le bouton de l'onglet. Existe-t-il une telle chose?

J'ai essayé :

% config IPCompleter.greedy = Vrai

mais cela nécessite d'appuyer sur le bouton de tabulation

Réponses:


92

Il existe une extension appelée Hinterland pour jupyter, qui affiche automatiquement le menu déroulant lors de la saisie. Il existe également d'autres extensions utiles.

Pour installer des extensions, vous pouvez suivre le guide sur ce dépôt github . Pour activer facilement les extensions, vous pouvez utiliser le configurateur d'extensions .


3
Si j'utilise une machine distante exécutant jupyter notebook et que je l'utilise depuis ma machine locale via un navigateur, où dois-je installer les extensions?
thebeancounter

2
@thebeancounter J'ai l'extension installée uniquement localement, c'est-à-dire sur la machine sur laquelle j'accède au notebook via un navigateur. Je n'ai pas d'extensions installées sur ma machine distante qui exécute jupyter notebook.
physicsGuy

5
J'ai installé hinterland et il ne complétera automatiquement que les éléments de base de python, mais ne complétera pas automatiquement les fonctions du module (par exemple, pd, np, etc.). Comment puis-je le faire compléter automatiquement comme pycharm?
thebeancounter

@thebeancounter Pour moi, hinterland fonctionne avec des modules comme numpy et pandas. Même si je fais une importation import numpy as npet un type relatifs np, des suggestions apparaissent (par exemple np.abs). Pour résoudre ce problème, plus de détails sur votre configuration sont nécessaires. Je suggérerais d'ouvrir une question distincte pour votre problème.
physicsGuy

2
Pour ceux qui ne sont pas familiers avec Jupyter Notebook comme moi, 1) suivez les instructions officielles pour installer ces choses: jupyter-contrib-nbextensions.readthedocs.io/en/latest / ... 2) installer l'interface utilisateur du configurateur de navigateur, à la suite de: github.com / Jupyter-contrib / jupyter_nbextensions_configurator 3) Ouvrez le notebook jupyter en utilisant la commande dans le terminal:jupyter notebook
Jason

33

L'auto-complétion avec Jupyter Notebook est si faible, même avec l'extension hinterland. Merci pour l'idée d'auto-complétion de code basée sur l'apprentissage en profondeur. J'ai développé une extension Jupyter Notebook basée sur TabNine qui fournit l'auto-complétion de code basée sur le Deep Learning. Voici le lien Github de mon travail: jupyter-tabnine .

Il est disponible sur maintenant pypi index . Émettez simplement les commandes suivantes, puis profitez-en :)

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

démo


Fonctionne très bien! Mais cela a tué ma nouvelle ligne (Shift + Enter) ne fonctionne plus dans Jupyter Notebook. Une solution de contournement pour cela?
Harvey

@Harvey Salut, je bloque le premier Enterpour éviter toute mauvaise opération. Si la fenêtre d'indication est affichée, la première Enterdéclenchera la fermeture de la fenêtre. Pour l'instant, si vous voulez une nouvelle ligne lorsque l'indice est affiché, vous pouvez simplement émettre Enterpuis émettre Enter(ou Shift+ Entersi vous voulez exécuter la cellule actuelle et en créer une nouvelle.) Je ne suis pas sûr que ce soit un bon design. Faites-moi savoir vos propos et suggestions.
Wenmin Wu

Sur le clavier de mon ordinateur portable, ´fn´ + "Entrée" fonctionne. Je m'habitue à ça. Le comportement attendu était Alt + Entrée pour la nouvelle ligne dans la cellule et Maj + Entrée pour l'exécution. Quoi qu'il en soit, compte tenu de l'utilité de ce plugin, ce n'est qu'une chose mineure. Je vous remercie!
Harvey

Au cas où une Permission deniederreur pourrait survenir lors de la tentative d'installation de jupyter, ajoutez simplement --useravec la commande jupyter install.
Yuen Tau le

1
Aussi un avertissement aimable: TabNine peut prendre une grande quantité de mémoire et de ressources CPU. Dans mon cas, j'exécute jupyter notebook à partir de WSL (Ubuntu 18.04) et TabNine occupe environ 1,5 Go de mémoire. La mémoire utilisée peut chuter à ~ 200 Mo si vous terminez la tâche à partir du gestionnaire de tâches et TabNine se lancera automatiquement la prochaine fois que vous tapez dans votre notebook jupyter. Plus de détails sur github.com/zxqfl/TabNine/issues/43 .
Yuen Tau le

12

Comme mentionné par @physicsGuy ci-dessus, vous pouvez utiliser l'extension hinterland. Des étapes simples pour le faire.

Installation de nbextension à l'aide du canal conda forge. Exécutez simplement la commande ci-dessous dans le terminal conda:

conda install -c conda-forge jupyter_nbextensions_configurator

Étape suivante: activer l'extension hinterland. Exécutez la commande ci-dessous dans le terminal conda:

jupyter nbextension enable hinterland/hinterland

Voilà, c'est fait.


5
Enabling notebook extension hinterland/hinterland... - Validating: problems found: - require? X hinterland/hinterlandC'est l'erreur en faisant cela
Darshu Bc

exécutez ces deux commandes jupyter contrib nbextension install --systemet jupyter contrib nbextension install --userpuis ceci pour voir la listejupyter nbextension list
PiotrK

8

Sans faire cela %config IPCompleter.greedy=Trueaprès avoir importé un paquet comme numpy ou pandas de cette façon; import numpy as np import pandas as pd.

Ensuite, vous tapez pd.puis appuyez sur le bouton de l'onglet, il fait ressortir toutes les méthodes possibles à utiliser très facilement et simplement.


7

J'utilise Jupiter Notebook 5.6.0. Ici, pour obtenir l'autosuggestion, j'appuie simplement sur la touche Tab après avoir entré au moins un caractère.

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

Pour obtenir les méthodes et les propriétés de la bibliothèque importée, utilisez la même touche Tab avec Alice

  import numpy as np

  np. --> Hit Tab key

1

Ajoutez ce qui suit aux préférences utilisateur de votre clavier sur jupyter lab (Paramètres-> Éditeur système avancé)

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

    ]
}

0

Je suggérerais une extension de l' arrière-pays .

Dans d'autres réponses, je n'ai pas trouvé la méthode pour l'installer à partir de pip, voici donc comment l'installer.

Tout d'abord, installez jupyter contrib nbextensions en exécutant

pip install jupyter_contrib_nbextensions

Ensuite, installez js et le fichier css pour jupyter en exécutant

jupyter contrib nbextension install --user

et à la fin,

jupyter nbextension enable hinterland/hinterland

La sortie de la dernière commande sera

Enabling notebook extension hinterland/hinterland...
      - Validating: OK
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.