Як отримати автозаповнення в блокноті jupyter без використання вкладки?


102

Я хотів би отримати функцію автозавершення в блокнотах, тобто коли я щось вводжу, з’являється спадне меню з усіма можливими речами, які я можу ввести, не натискаючи кнопку табуляції. Чи є така річ?

Я намагався :

% config IPCompleter.greedy = Правда

але для цього потрібно натиснути кнопку вкладки

Відповіді:


92

Існує розширення під назвою Hinterland for jupyter, яке автоматично відображає спадне меню під час введення тексту. Є також деякі інші корисні розширення.

Для того, щоб встановити розширення, ви можете слідувати керівництву у цьому репозиторії github . Щоб легко активувати розширення, ви можете скористатися конфігуратором розширень .


3
Якщо я використовую віддалену машину, на якій запущено блокнот jupyter, і я використовую його з локальної машини через браузер, де мені слід встановити розширення?
thebeancounter

2
@thebeancounter У мене розширення встановлюється лише локально, тобто на машині, де я отримую доступ до блокнота через браузер. На моїй віддаленій машині, на якій працює ноутбук jupyter, у мене не встановлено розширень.
physicsGuy

5
Я встановив hinterland, і він буде лише автоматично заповнювати основні матеріали з python, але не буде виконувати функції автозавершення модуля (наприклад, pd, np тощо). Як я можу зробити так, щоб це було також автозаповнення як pycharm?
thebeancounter

@thebeancounter Для мене внутрішня область працює з такими модулями, як numpy та pandas. Навіть якщо я виконую відносний імпорт import numpy as npі тип np, з’являються пропозиції (наприклад, np.abs). Щоб вирішити цю проблему, потрібна додаткова інформація про налаштування. Я пропоную відкрити окреме запитання щодо вашої проблеми.
фізикаГуй

2
Для тих, хто не знайомий з Jupyter Notebook, як я, 1) дотримуйтесь офіційної інструкції щодо встановлення цих речей: jupyter-contrib-nbextensions.readthedocs.io/en/latest/… 2) встановіть інтерфейс користувача конфігуратора браузера, наступний: github.com / Jupyter-contrib / jupyter_nbextensions_configurator 3) Відкрийте блокнот jupyter за допомогою команди в терміналі:jupyter notebook
Джейсон

33

Автозаповнення з ноутбуком Jupyter настільки слабке, навіть з розширенням глибинки. Дякуємо за ідею автоматичного заповнення коду на основі глибокого навчання. Я розробив розширення для ноутбуків Jupyter на основі TabNine, яке забезпечує автозаповнення коду на основі глибокого навчання. Ось посилання Github на мою роботу: jupyter-tabnine .

Зараз він доступний на індексі pypi . Просто видайте наступні команди, а потім насолоджуйтесь :)

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

демо


Чудово працює! Але це вбило мій новий рядок (Shift + Enter) більше не працює в блокноті Jupyter. Будь-яке обхідне рішення для цього?
Харві,

@Harvey Привіт, я блокую першого, Enterщоб уникнути неправильної роботи. Якщо відображається вікно підказки, перше Enterініціює закриття вікна. Наразі, якщо вам потрібен новий рядок, коли відображається підказка, ви можете просто видавати, Enterа потім видавати Enter(або Shift+, Enterякщо ви хочете виконати поточну комірку і створити нову.) Я не впевнений, чи це хороший дизайн. Повідомте мене про ваші вирубки та пропозиції.
Wenmin Wu

На моєму ноутбуці працює клавіатура "fn" + "Enter". Я звикаю до ніж. Очікуваною поведінкою було Alt + Enter для нового рядка в комірці та Shift + Enter для виконання. У будь-якому випадку, враховуючи, наскільки корисний цей плагін, це лише незначна річ. Дякую!
Харві,

Якщо у вас може виникнути Permission deniedпомилка при спробі встановити для jupyter, просто додайте за --userдопомогою команди jupyter install.
Юен Тау

1
Також ласкаве попередження: TabNine може зайняти велику кількість пам'яті та ресурсів процесора. У моєму випадку я запускаю ноутбук jupyter з WSL (Ubuntu 18.04), і TabNine займає ~ 1,5 ГБ пам'яті. Використана пам’ять може зменшитися до ~ 200 МБ, якщо ви закінчите завдання з диспетчера завдань, а TabNine автоматично завантажиться під час наступного введення в блокнот jupyter. Детальніше на github.com/zxqfl/TabNine/issues/43 .
Юен Тау,

12

Як згадував @physicsGuy вище, Ви можете використовувати розширення внутрішньої області. Прості кроки для цього.

Встановлення nbextension за допомогою каналу conda forge. Просто запустіть команду нижче в терміналі conda:

conda install -c conda-forge jupyter_nbextensions_configurator

Наступний крок, що дозволяє розширення внутрішніх територій. Запустіть команду нижче в терміналі conda:

jupyter nbextension enable hinterland/hinterland

Ось і все, зроблено.


5
Enabling notebook extension hinterland/hinterland... - Validating: problems found: - require? X hinterland/hinterlandУ цьому помилка
Darshu Bc

виконайте ці дві команди, jupyter contrib nbextension install --systemа jupyter contrib nbextension install --userпотім це, щоб побачити списокjupyter nbextension list
PiotrK

8

Не роблячи цього %config IPCompleter.greedy=Trueпісля того, як ви імпортуєте такий пакет, як numpy або pandas; import numpy as np import pandas as pd.

Потім ви вводите текст, pd.а потім натискаєте кнопку вкладки, вона відображає всі можливі способи використання дуже просто і прямо вперед.


7

Я використовую блокнот Юпітера 5.6.0. Тут для отримання самонавіювання я просто натискаю клавішу Tab після введення принаймні одного символу.

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

Щоб отримати методи та властивості всередині імпортованої бібліотеки, використовуйте ту саму клавішу Tab та Alice

  import numpy as np

  np. --> Hit Tab key

1

Додайте нижче до своїх налаштувань користувачів клавіатури в лабораторії jupyter (Налаштування-> Розширений редактор системи)

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

Я б запропонував розширення глибинки .

В інших відповідях я не міг знайти спосіб, як встановити його з pip, тож ось як ви його встановлюєте.

Спочатку встановіть jupyter contrib nbextensions, запустивши

pip install jupyter_contrib_nbextensions

Потім встановіть файл js та css для jupyter, запустивши

jupyter contrib nbextension install --user

і в кінці запуску,

jupyter nbextension enable hinterland/hinterland

Результатом останньої команди буде

Enabling notebook extension hinterland/hinterland...
      - Validating: OK
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.