Как получить автозаполнение в блокноте jupyter без использования вкладки?


106

Я хотел бы получить функцию автозаполнения в записных книжках, т.е. когда я что-то печатаю, появляется раскрывающееся меню со всеми возможными элементами, которые я могу ввести, без необходимости нажимать кнопку вкладки. Что-то подобное существует?

Я старался :

% config IPCompleter.greedy = True

но это требует нажатия кнопки табуляции

Ответы:


96

Для jupyter существует расширение Hinterland , которое автоматически отображает раскрывающееся меню при вводе текста. Есть и другие полезные расширения.

Чтобы установить расширения, вы можете следовать руководству по этому репозиторию github . Чтобы легко активировать расширения, вы можете использовать конфигуратор расширений .


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

2
@thebeancounter У меня расширение установлено только локально, то есть на машине, где я получаю доступ к ноутбуку через браузер. У меня не установлено никаких расширений на моем удаленном компьютере, на котором работает jupyter notebook.
PhysicsGuy 03

6
Я установил hinterland, и он будет автоматически заполнять только базовый материал Python, но не будет автоматически заполнять функции модуля (например, pd, np и т.д.). Как я могу сделать так, чтобы он автоматически заполнял их, как pycharm?
thebeancounter

@thebeancounter Для меня hinterland работает с такими модулями, как numpy и pandas. Даже если я сделаю относительный импорт import numpy as npи тип np, появятся предложения (например, np.abs). Для устранения этой проблемы требуются дополнительные сведения о вашей настройке. Предлагаю открыть по вашей проблеме отдельный вопрос.
PhysicsGuy

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

39

Автозаполнение в Jupyter Notebook настолько слабое, даже с расширением для внутренних районов. Спасибо за идею автозаполнения кода на основе глубокого обучения. Я разработал расширение Jupyter Notebook Extension на основе 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 Notebook. Есть ли способ обхода этого?
Харви

@ Harvey Привет, я блокирую первый, Enterчтобы избежать ошибок. Если отображается окно подсказки, первое Enterвызовет закрытие окна. На данный момент, если вам нужна новая строка, когда отображается подсказка, вы можете просто выполнить, Enterа затем выполнить Enter(или Shift+, Enterесли вы хотите выполнить текущую ячейку и создать новую). Я не уверен, хороший ли это дизайн. Сообщите мне свои мысли и предложения.
Вэньминь Ву

На моем ноутбуке работает клавиатура «fn» + «Enter». Привыкаю к ​​чему. Ожидаемое поведение: Alt + Enter для новой строки в ячейке и Shift + Enter для выполнения. В любом случае, учитывая, насколько полезен этот плагин, это мелочь. Спасибо!
Харви

В случае, если Permission deniedпри попытке установки для jupyter может возникнуть ошибка, просто добавьте --userс помощью команды установки jupyter.
Юэнь Тау

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

12

Как упоминалось выше @physicsGuy, вы можете использовать расширение hinterland. Простые шаги для этого.

Установка 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Это ошибка в этом
Даршу 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.текст, затем нажимаете кнопку вкладки, и вы видите все возможные методы, которые можно использовать очень просто и прямо.


8

Я использую Jupiter Notebook 5.6.0. Здесь, чтобы получить самовнушение, я просто нажимаю клавишу Tab после ввода хотя бы одного символа.

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

Чтобы получить методы и свойства внутри импортированной библиотеки, используйте ту же клавишу Tab с Алисой.

  import numpy as np

  np. --> Hit Tab key

2

Я бы посоветовал расширить внутренние районы .

В других ответах я не мог найти способ его установки из 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

1

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

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

    ]
}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.