Jak uzyskać autouzupełnianie w notatniku Jupyter bez korzystania z karty?

105

Chciałbym mieć funkcję autouzupełniania w notatnikach, tj. Kiedy coś wpisuję, pojawia się menu rozwijane ze wszystkimi możliwymi rzeczami, które mogę wpisać, bez konieczności naciskania przycisku tabulatora. Czy jest coś takiego?

Próbowałem :

% config IPCompleter.greedy = True

ale wymaga to naciśnięcia przycisku tabulatora

physicsnoob1000
źródło

Odpowiedzi:

95

Istnieje rozszerzenie o nazwie Hinterland dla jupyter, które automatycznie wyświetla rozwijane menu podczas pisania. Istnieją również inne przydatne rozszerzenia.

Aby zainstalować rozszerzenia, możesz postępować zgodnie z przewodnikiem po tym repozytorium github . Aby łatwo aktywować rozszerzenia, możesz skorzystać z konfiguratora rozszerzeń .

fizyka
źródło
3
Jeśli używam zdalnego komputera z notebookiem jupyter i używam go z mojego lokalnego komputera za pośrednictwem przeglądarki, gdzie mam zainstalować rozszerzenia?
thebeancounter
2
@thebeancounter Mam rozszerzenie zainstalowane tylko lokalnie, czyli na komputerze, na którym mam dostęp do notebooka przez przeglądarkę. Nie mam zainstalowanych żadnych rozszerzeń na moim zdalnym komputerze, na którym działa notebook jupyter.
physicsGuy
6
Zainstalowałem Hinterland i będzie on automatycznie uzupełniał podstawowe rzeczy w Pythonie, ale nie będzie autouzupełniania funkcji modułu (np. Pd, np. Itp.). Jak mogę sprawić, by automatycznie uzupełniał te, podobnie jak pycharm?
thebeancounter
@thebeancounter Dla mnie zaplecze działa z modułami takimi jak numpy i pandy. Nawet jeśli wykonam względny import import numpy as npi typ np, pojawiają się sugestie (np.abs). Aby rozwiązać ten problem, wymagane są szczegółowe informacje o konfiguracji. Proponuję otworzyć osobne pytanie dotyczące Twojego problemu.
physicsGuy
2
Dla tych, którzy nie są zaznajomieni z notebookiem Jupyter, takim jak ja, 1) postępuj zgodnie z oficjalną instrukcją, aby zainstalować te rzeczy: jupyter-contrib-nbextensions.readthedocs.io/en/latest/ ... 2) zainstaluj interfejs konfiguratora przeglądarki, następujący: github.com / Jupyter-contrib / jupyter_nbextensions_configurator 3) Otwórz notatnik jupyter za pomocą polecenia w terminalu:jupyter notebook
Jason
38

Automatyczne uzupełnianie w Jupyter Notebook jest tak słabe, nawet z rozszerzeniem w głąb lądu. Dziękujemy za pomysł automatycznego uzupełniania kodu opartego na uczeniu głębokim. Opracowałem rozszerzenie notebooka Jupyter oparte na TabNine, które zapewnia automatyczne uzupełnianie kodu w oparciu o głębokie uczenie się. Oto link Github do mojej pracy: jupyter-tabnine .

Jest teraz dostępny w indeksie pypi . Po prostu wydaj następujące polecenia i ciesz się :)

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

próbny

Wenmin Wu
źródło
Działa świetnie! Ale to zabiło moją nową linię (Shift + Enter) nie działa już w Jupyter Notebook. Jakieś obejście tego problemu?
Harvey
@Harvey Cześć, blokuję pierwszą, Enteraby uniknąć nieprawidłowego działania. Jeśli zostanie wyświetlone okno podpowiedzi, pierwsze Enterspowoduje zamknięcie okna. Na razie, jeśli chcesz, aby nowa linia była wyświetlana po wyświetleniu podpowiedzi, możesz po prostu wydać, Entera następnie wydać Enter(lub Shift+, Enterjeśli chcesz wykonać bieżącą komórkę i utworzyć nową). Nie jestem pewien, czy to dobry projekt. Daj mi znać, jakie masz uwagi i sugestie.
Wenmin Wu,
Na klawiaturze mojego laptopa działa ´fn´ + ´Enter´. Przyzwyczajam się wtedy. Oczekiwanym zachowaniem było Alt + Enter dla nowej linii w komórce i Shift + Enter do wykonania. W każdym razie, biorąc pod uwagę, jak przydatna jest ta wtyczka, jest to drobiazg. Dziękuję Ci!
Harvey
W przypadku wystąpienia Permission deniedbłędu podczas próby instalacji dla jupyter, po prostu dodaj --userza pomocą polecenia instalacji jupyter.
Yuen Tau
1
Również miłe ostrzeżenie: TabNine może zająć sporą ilość pamięci i zasobów procesora. W moim przypadku uruchamiam notebook jupyter z WSL (Ubuntu 18.04), a TabNine zajmuje ~ 1,5 GB pamięci. Wykorzystana pamięć może spaść do ~ 200 MB, jeśli zakończysz zadanie z poziomu menedżera zadań, a TabNine uruchomi się automatycznie, gdy następnym razem będziesz pisać w swoim notatniku jupyter. Więcej szczegółów na github.com/zxqfl/TabNine/issues/43 .
Yuen Tau
12

Jak wspomniano powyżej @physicsGuy, możesz użyć rozszerzenia zaplecza. Proste kroki, aby to zrobić.

Instalowanie nbextension przy użyciu kanału Conda Forge. Po prostu uruchom poniższe polecenie w terminalu Conda:

conda install -c conda-forge jupyter_nbextensions_configurator

Następny krok umożliwiający rozszerzenie w głąb lądu. Uruchom poniższe polecenie w terminalu Conda:

jupyter nbextension enable hinterland/hinterland

Gotowe.

Sanchit Kumar
źródło
5
Enabling notebook extension hinterland/hinterland... - Validating: problems found: - require? X hinterland/hinterlandTo jest błąd w robieniu tego
Darshu Bc
uruchom te dwie komendy, jupyter contrib nbextension install --systema jupyter contrib nbextension install --userpotem to, żeby zobaczyć listęjupyter nbextension list
PiotrK
8

Bez robienia tego %config IPCompleter.greedy=Truepo zaimportowaniu pakietu takiego jak numpy lub pandy w ten sposób; import numpy as np import pandas as pd.

Następnie wpisujesz, pd.a następnie stuknij przycisk karty, aby wyświetlić wszystkie możliwe metody użycia bardzo łatwych i prostych.

Micah Timileyin
źródło
8

Używam Jupiter Notebook 5.6.0. Tutaj, aby uzyskać autosugestię, po prostu naciskam klawisz Tab po wprowadzeniu co najmniej jednego znaku.

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

Aby uzyskać metody i właściwości wewnątrz importowanej biblioteki, użyj tego samego klawisza Tab, co Alice

  import numpy as np

  np. --> Hit Tab key
Hearaman
źródło
2

Sugerowałbym rozszerzenie w głąb lądu .

W innych odpowiedziach nie mogłem znaleźć metody instalacji z pip, więc tak to instalujesz.

Najpierw zainstaluj jupyter contrib nbextensions, uruchamiając

pip install jupyter_contrib_nbextensions

Następnie zainstaluj plik js i css dla jupyter, uruchamiając

jupyter contrib nbextension install --user

a na koniec bieg,

jupyter nbextension enable hinterland/hinterland

Wynik ostatniego polecenia będzie

Enabling notebook extension hinterland/hinterland...
      - Validating: OK
Khushal Sharma
źródło
1

Dodaj poniższe do preferencji użytkownika klawiatury w jupyter lab (Ustawienia-> Zaawansowany edytor systemowy)

{
    "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
źródło