Como obter o preenchimento automático no notebook jupyter sem usar a guia?

100

Gostaria de obter um recurso de preenchimento automático em notebooks, ou seja, quando eu digito algo, um menu suspenso aparece, com todas as coisas possíveis que posso digitar, sem ter que pressionar o botão tab. Existe uma coisa dessas?

Eu tentei :

% config IPCompleter.greedy = True

mas isso requer que o botão da guia seja pressionado

physicsnoob1000
fonte

Respostas:

91

Há uma extensão chamada Hinterland para jupyter, que exibe automaticamente o menu suspenso ao digitar. Existem também algumas outras extensões úteis.

Para instalar extensões, você pode seguir o guia neste repositório github . Para ativar as extensões facilmente, você pode usar o configurador de extensões .

physicsGuy
fonte
3
Se eu estiver usando uma máquina remota executando o notebook jupyter e a usar em minha máquina local via navegador, onde devo instalar as extensões?
thebeancounter
2
@thebeancounter Tenho a extensão instalada apenas localmente, ou seja, na máquina onde acesso o notebook via navegador. Não tenho nenhuma extensão instalada na minha máquina remota que executa o jupyter notebook.
PhysicsGuy
5
Eu instalei o hinterland e ele só completará automaticamente as coisas básicas do python, mas não completará automaticamente as funções do módulo (por exemplo, pd, np etc), como posso fazer com que ele complete automaticamente as funções do pycharm?
thebeancounter
@thebeancounter Para mim, hinterland trabalha com módulos como numpy e pandas. Mesmo se eu fizer uma importação import numpy as npe tipo relativos np, sugestões aparecem (por exemplo, np.abs). Para solucionar esse problema, são necessários mais detalhes sobre sua configuração. Eu sugiro abrir uma pergunta separada para o seu problema.
physicsGuy
2
Para aqueles que não estão familiarizados com o Jupyter Notebook como eu, 1) siga as instruções oficiais para instalar essas coisas: jupyter-contrib-nbextensions.readthedocs.io/en/latest/… 2) instale a IU do configurador do navegador, a seguir: github.com / Jupyter-contrib / jupyter_nbextensions_configurator 3) Abra o bloco de notas jupyter usando o comando no terminal:jupyter notebook
Jason
33

O preenchimento automático com o Jupyter Notebook é tão fraco, mesmo com extensão para o interior. Obrigado pela ideia de autocompletar código baseado em aprendizado profundo. Desenvolvi uma extensão para notebook Jupyter baseada no TabNine que fornece autocompletar código com base no Deep Learning. Aqui está o link Github do meu trabalho: jupyter-tabnine .

Já está disponível no índice pypi . Simplesmente emita os seguintes comandos e divirta-se :)

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
fonte
Funciona bem! Mas matou minha nova linha (Shift + Enter) não funciona mais no Jupyter Notebook. Alguma solução alternativa para isso?
Harvey,
@Harvey Oi, eu bloqueio o primeiro Enterpara evitar operação incorreta. Se a janela de dicas for mostrada, a primeira Enteracionará o fechamento da janela. Por enquanto, se você quiser uma nova linha quando a dica for mostrada, você pode apenas emitir Entere depois emitir Enter(ou Shift+ Enterse quiser executar a célula atual e criar uma nova). Não tenho certeza se é um bom design. Deixe-me saber seus sentimentos e sugestões.
Wenmin Wu,
No teclado do meu laptop, o ´fn´ + ´Enter´ funciona. Estou me acostumando com isso. O comportamento esperado era Alt + Enter para a nova linha na célula e Shift + Enter para execução. De qualquer forma, considerando o quão útil este plugin é, isso é apenas uma coisa secundária. Obrigado!
Harvey,
Caso haja algum Permission deniederro ao tentar instalar o jupyter, basta adicionar --usercom o comando jupyter install.
Yuen Tau
1
Também um aviso gentil: TabNine pode ocupar uma grande quantidade de recursos de memória e CPU. No meu caso, executo o jupyter notebook do WSL (Ubuntu 18.04) e o TabNine ocupa cerca de 1,5 GB de memória. A memória usada pode cair para ~ 200 MB se você encerrar a tarefa do gerenciador de tarefas e o TabNine se autoboot na próxima vez que você digitar em seu notebook jupyter. Mais detalhes em github.com/zxqfl/TabNine/issues/43 .
Yuen Tau
11

Conforme mencionado por @physicsGuy acima, você pode usar a extensão hinterland. Passos simples para fazer isso.

Instalando nbextension usando o canal conda forge. Basta executar o comando abaixo no terminal conda:

conda install -c conda-forge jupyter_nbextensions_configurator

Próxima etapa habilitando a extensão do interior. Execute o comando abaixo no terminal conda:

jupyter nbextension enable hinterland/hinterland

Isso mesmo.

Sanchit Kumar
fonte
5
Enabling notebook extension hinterland/hinterland... - Validating: problems found: - require? X hinterland/hinterlandEste é o erro ao fazer isso
Darshu Bc
execute estes dois comandos jupyter contrib nbextension install --systeme jupyter contrib nbextension install --userentão isto para ver a listajupyter nbextension list
PiotrK
8

Sem fazer isso %config IPCompleter.greedy=Truedepois de importar um pacote como numpy ou pandas dessa forma; import numpy as np import pandas as pd.

Em seguida, você digita pd.e toca no botão guia, que traz todos os métodos possíveis de usar de forma fácil e direta.

Micah Timileyin
fonte
7

Estou usando o Jupiter Notebook 5.6.0. Aqui, para obter a sugestão automática, estou apenas pressionando a tecla Tab após inserir pelo menos um caractere.

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

Para obter os métodos e propriedades dentro da biblioteca importada, use a mesma tecla Tab de Alice

  import numpy as np

  np. --> Hit Tab key
Hearaman
fonte
1

Adicione o seguinte às preferências do usuário do teclado no jupyter lab (Configurações-> Editor avançado do 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
fonte