¿Cómo completar la función de autocompletar en el cuaderno jupyter sin usar la pestaña?

103

Me gustaría tener una función de autocompletado en los cuadernos, es decir, cuando escribo algo, aparece un menú desplegable, con todas las cosas posibles que podría escribir, sin tener que presionar el botón de tabulación. ¿Existe tal cosa?

Lo intenté :

% config IPCompleter.greedy = Verdadero

pero esto requiere que se presione el botón de pestaña

physicsnoob1000
fuente

Respuestas:

93

Existe una extensión llamada Hinterland para jupyter, que muestra automáticamente el menú desplegable al escribir. También hay otras extensiones útiles.

Para instalar extensiones, puede seguir la guía en este repositorio de github . Para activar extensiones fácilmente, es posible que desee utilizar el configurador de extensiones .

física chico
fuente
3
Si estoy usando una máquina remota que ejecuta jupyter notebook y la uso desde mi máquina local a través del navegador, ¿dónde debo instalar las extensiones?
thebeancounter
2
@thebeancounter Tengo la extensión instalada solo localmente, es decir, en la máquina donde accedo al portátil a través del navegador. No tengo ninguna extensión instalada en mi máquina remota que ejecuta jupyter notebook.
physicsGuy
5
He instalado hinterland y solo completará automáticamente las cosas básicas de Python, pero no completará automáticamente las funciones del módulo (por ejemplo, pd, np, etc.). ¿Cómo puedo hacer que las autocomplete también como pycharm?
thebeancounter
@thebeancounter Para mí, hinterland funciona con módulos como numpy y pandas. Incluso si hago una importación import numpy as npy un tipo relativos np, aparecen sugerencias (por ejemplo, np.abs). Para solucionar este problema, se requieren más detalles sobre su configuración. Sugeriría abrir una pregunta separada para su problema.
physicsGuy
2
Para aquellos que no están familiarizados con Jupyter Notebook como yo, 1) siga las instrucciones oficiales para instalar estas cosas: jupyter-contrib-nbextensions.readthedocs.io/en/latest/… 2) instale la interfaz de usuario del configurador del navegador, a continuación: github.com / Jupyter-contrib / jupyter_nbextensions_configurator 3) Abra el cuaderno jupyter usando el comando en la terminal:jupyter notebook
Jason
33

El autocompletado con Jupyter Notebook es muy débil, incluso con la extensión del interior. Gracias por la idea de completar automáticamente el código basado en el aprendizaje profundo. Desarrollé una extensión de Jupyter Notebook basada en TabNine que proporciona autocompletado de código basado en Deep Learning. Aquí está el enlace de Github de mi trabajo: jupyter-tabnine .

Está disponible en el índice pypi ahora. Simplemente emita los siguientes comandos, luego disfrútelo :)

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

manifestación

Wenmin Wu
fuente
¡Funciona genial! Pero ha matado mi nueva línea (Shift + Enter) ya no funciona en Jupyter Notebook. ¿Alguna solución para eso?
Harvey
@Harvey Hola, bloqueo el primero Enterpara evitar un mal funcionamiento. Si se muestra la ventana de sugerencias, la primera Enteractivará el cierre de la ventana. Por ahora, si desea una nueva línea cuando se muestra la sugerencia, puede emitir Entery luego emitir Enter(o Shift+ Entersi desea ejecutar la celda actual y crear una nueva). No estoy seguro de si es un buen diseño. Hágame saber sus opiniones y sugerencias.
Wenmin Wu
En el teclado de mi computadora portátil ´fn´ + ´Enter´ funciona. Me estoy acostumbrando a que. El comportamiento esperado fue Alt + Enter para la nueva línea en la celda y Shift + Enter para la ejecución. De todos modos, considerando lo útil que es este complemento, esto es solo una cosa menor. ¡Gracias!
Harvey
En caso de que uno pueda tener el Permission deniederror al intentar instalar jupyter, simplemente agregue --usercon el comando de instalación de jupyter.
Yuen Tau
1
También una amable advertencia: TabNine puede ocupar una gran cantidad de memoria y recursos de CPU. En mi caso, ejecuto el cuaderno jupyter desde WSL (Ubuntu 18.04) y TabNine ocupa ~ 1,5 GB de memoria. La memoria utilizada puede caer a ~ 200 MB si finaliza la tarea desde el administrador de tareas y TabNine se iniciará automáticamente la próxima vez que escriba en su cuaderno jupyter. Más detalles en github.com/zxqfl/TabNine/issues/43 .
Yuen Tau
12

Como lo mencionó @physicsGuy anteriormente, puede usar la extensión hinterland. Pasos sencillos para hacerlo.

Instalación de nbextension mediante conda forge channel. Simplemente ejecute el siguiente comando en la terminal conda:

conda install -c conda-forge jupyter_nbextensions_configurator

Siguiente paso para habilitar la extensión del interior. Ejecute el siguiente comando en la terminal conda:

jupyter nbextension enable hinterland/hinterland

Eso es todo, hecho.

Sanchit Kumar
fuente
5
Enabling notebook extension hinterland/hinterland... - Validating: problems found: - require? X hinterland/hinterlandEste es el error al hacer esto
Darshu Bc
ejecute estos dos comandos jupyter contrib nbextension install --systemy jupyter contrib nbextension install --userluego esto para ver la listajupyter nbextension list
PiotrK
8

Sin hacer esto %config IPCompleter.greedy=Truedespués de importar un paquete como numpy o pandas de esta manera; import numpy as np import pandas as pd.

Luego, escribe y pd.luego toca el botón de pestaña que muestra todos los métodos posibles para usar de manera muy fácil y directa.

Micah Timileyin
fuente
7

Estoy usando Jupiter Notebook 5.6.0. Aquí, para obtener la autosugestión, simplemente presiono la tecla Tab después de ingresar al menos un carácter.

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

Para obtener los métodos y propiedades dentro de la biblioteca importada, use la misma tecla Tab con Alice

  import numpy as np

  np. --> Hit Tab key
Hearaman
fuente
1

Agregue lo siguiente a las preferencias de usuario de su teclado en jupyter lab (Configuración-> Editor avanzado del sistema)

{
    "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
fuente
1

Sugeriría una extensión del interior .

En otras respuestas, no pude encontrar el método de cómo instalarlo desde pip, así que así es como se instala.

Primero, instale jupyter contrib nbextensions ejecutando

pip install jupyter_contrib_nbextensions

A continuación, instale el archivo js y css para jupyter ejecutando

jupyter contrib nbextension install --user

y al final corre,

jupyter nbextension enable hinterland/hinterland

La salida del último comando será

Enabling notebook extension hinterland/hinterland...
      - Validating: OK
Khushal sharma
fuente