Используйте IPython REPL в VS Code

Используя расширение Python для Visual Studio Code, я могу выбрать код, щелкнуть его правой кнопкой мыши и выбрать «Выполнить выделение / строку в терминале Python» (в качестве альтернативы я могу нажать Shift + Enter). Однако это отправляет выбранный код в простой старый Python REPL на панели «Терминал», тогда как я бы хотел, чтобы этот код запускался вместо этого в IPython (не в QtConsole, а только в IPython на основе терминала).

Можно ли установить IPython как REPL по умолчанию? Я попытался установить /usr/local/bin/ipython3 в качестве среды Python по умолчанию, но это не сработало (он по-прежнему выполняет простой интерпретатор Python). FWIW, я использую macOS.

Вы проверяли официальный документы? Вы также можете попробовать расширение code runner.

winklerrr 13.09.2018 11:31

В документации обсуждается Jupyter (ноутбуки), но вместо этого я хотел бы запустить терминальный IPython. code-runner, похоже, не работает с IPython: github.com/formulahendry/vscode-code-runner/issues/360

cbrnr 13.09.2018 11:37
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
34
3
24 546
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Ответ принят как подходящий

Введите Ipython в окне терминала. Затем выберите строку или строки, которые вы хотите запустить, в окне редактора, а затем щелкните меню «Терминал» в верхней части окна VScode. Один из вариантов в меню «Терминал» - «Запустить выделенный текст». Это будет запущено в окне терминала Ipython. Я не знаю, как сделать это по умолчанию, но, похоже, он останется в этом состоянии, если Ipython не будет остановлен. Примечание. Вы должны выполнить свой выбор с помощью пункта меню. Если щелкнуть правой кнопкой мыши в окне редактора и щелкнуть «Выполнить выделение», окно Ipython не будет использоваться. Надеюсь, это понятно. Если не просто оставьте комментарий.

Отлично, это работает! Я не могу поверить, что это так сложно найти, похоже, что плагин Python должен по умолчанию использовать это поведение, а не то, что он делает прямо сейчас. Я сопоставил эту функцию с сочетанием клавиш Shift + Enter, и она отлично работает!

cbrnr 14.09.2018 08:20

Хм, к сожалению, это работает не совсем так, как ожидалось. Если я выберу несколько строк, в терминале будет запущена только первая строка выбора. Похоже на ошибку, посмотрю, сообщил ли уже кто-нибудь об этом.

cbrnr 14.09.2018 13:29

У меня это сработало с несколькими строками. Я не понимаю, почему у тебя это не сработало.

Natsfan 14.09.2018 16:23

Я попробовал еще раз с несколькими строками, но это НЕ сработало. Мой предыдущий комментарий был неправильным. Я пробовал несколько вещей, но мне не удалось запустить более одной строки.

Natsfan 14.09.2018 16:38

Я разместил там вопрос: github.com/Microsoft/vscode/issues/61892

Labo 27.10.2018 00:13

Не уверен, почему, но ipython останавливается на первой пустой строке. Если у вас несколько строк смежные, он запустит их все. С другой стороны, если вы копируете и вставляете их прямо в терминал, все они целиком помещаются в одну входную запись, но вам все равно нужно дважды нажать Enter, чтобы запустить ее.

syockit 15.05.2019 15:10

В лучшем случае утомительное решение

Walker Hale IV 03.04.2021 00:49

Чтобы не использовать мышь для выбора пункта меню (Терминал> Выполнить выделенный текст), можно использовать специальный ярлык. У меня Shift+Enter, чтобы следовать другому соглашению.

bagustris 25.06.2021 12:10

Я запускаю IPython из внутри, стандартного REPL Python, созданного Shift-Enter с

import IPython
IPython.embed()

См. Документы IPython.

хотя это сработало для добавления кода в экземпляр IPython, он по-прежнему не запускает код, вместо этого нажатие Shift + Enter только добавляет код + "\ n" (т. е. следующую строку).

zero 08.02.2019 04:07

За исключением раскраски текста, это наиболее предпочтительный вариант.

Kenial 05.10.2019 03:50

Я использую Ctrl + D, чтобы закрыть простой Python REPL, созданный Shift + Enter, а затем просто запустить IPython REPL из командной строки в окне терминала (я использую WSL с VS Code), что дает мне цвета. Здесь интерпретируется код, отправленный от редактора.

Daan 16.06.2020 13:05

Поддержка IPython обеспечивается плагином «IPython for VSCode».

Просто выделите текст и вызовите «Отправить выделенный текст (или текущую строку) в IPython» в палитре команд.

Также официальный плагин Microsoft Python теперь поддерживает интерактивные окна Jupiter с аналогичной функциональностью.

Используйте плагин «IPython for VSCode».

Установите его, а затем используйте Send Select Text (or current line) To IPython

Если вы хотите использовать настройку ярлыка с оригинальным shift+enter для выполнения команды выше, используйте методы Один из ниже.

Настройка ярлыка - Нормальный

  1. настройка открытого ярлыка: Macos это cmd+k cmd+s.

  2. команду поиска выше и щелкните правой кнопкой мыши, чтобы изменить привязку клавиатуры как shift+enter.

  3. Затем щелкните правой кнопкой мыши еще раз, чтобы изменить When expression как:

editorTextFocus && !findInputFocussed && !python.datascience.ownsSelection && !replaceInputFocussed && editorLangId == 'python'
  1. Щелкните правой кнопкой мыши и выберите show same key bindings.

  2. Найдите команду Python: Run Selection/Line in Python Terminal и щелкните правой кнопкой мыши, чтобы отключить ее.

Настройка ярлыка - JSON

  1. Откройте настройку ярлыка и щелкните в правом верхнем углу, чтобы открыть конфигурацию JSON.

  2. Добавьте эти настройки:

    {
        "key": "shift+enter",
        "command": "ipython.sendSelectedToIPython",
        "when": "editorTextFocus && !findInputFocussed && !python.datascience.ownsSelection && !replaceInputFocussed && editorLangId == 'python'"
    },
    {
        "key": "shift+enter",
        "command": "-python.execSelectionInTerminal",
        "when": "editorTextFocus && !findInputFocussed && !python.datascience.ownsSelection && !replaceInputFocussed && editorLangId == 'python'"
    }

Спасибо! Есть ли способ автоматически переместить фокус обратно в редактор после отправки текста в IPython?

Feng Mai 15.01.2020 16:56

Привет, извините за комментарий позже. В большинстве случаев мне нужен курсор курсора на ipython. Если вы хотите, чтобы он снова сфокусировался, возможно, вы можете использовать ярлык Cmd + number в зависимости от вашей группы.

alex li 28.01.2020 08:22

Добавление следующего параметра (предпочтение: открыть настройки JSON; или предпочтение -> настройки -> поиск launchArgs -> редактировать в json) работает без какого-либо расширения. Это также устраняет проблему, заключающуюся в том, что несколько строк не могут быть отправлены в Python.

"python.terminal.launchArgs": [
    "-c",
    "\"import subprocess; subprocess.call(['ipython', '--no-autoindent'])\""
],

Обновление (2020-12-27): следующий параметр работает лучше, потому что он поддерживает прерывание клавиатуры Ctrl + C без существующего IPython:

"python.terminal.launchArgs": [
    "-m",
    "IPython",
    "--no-autoindent",
],

Это отлично работает, спасибо! Все, что я делаю, когда хочу запустить код Python через ipython в vscode, - это открывать терминал в vscode и набирать ipython в начале сеанса. Затем shift + enter в моем скрипте отправляет его на ipython. Если бы у меня не было этого фрагмента кода в моих настройках, он бы добавил ненужные отступы. Спасибо еще раз!

talbe009 27.12.2020 18:44

Вы также можете установить "python.pythonPath" в свой settings.json следующим образом:

{
  "python.pythonPath": "~/miniconda3/bin/ipython3",
  "python.dataScience.sendSelectionToInteractiveWindow": false
}

или

{
  "python.pythonPath": "~/miniconda3/envs/<yourEnv>/bin/ipython3",
  "python.dataScience.sendSelectionToInteractiveWindow": false
}

shift+enter запустит ipython и отправит строку на терминал.

Это работает, но похоже, что это может испортить другие вещи, потому что настройка python.pythonPath может понадобиться в других местах. Я обнаружил, что отображение Shift + Enter на «Терминал: запуск выбранного текста в активном терминале» (workbench.action.terminal.runSelectedText) запускает выбранные строки в активном терминале (где я сначала вручную запускаю IPython). Теперь это также работает с несколькими линиями и уровнями отступа. Требуется только переназначение одного сочетания клавиш.

cbrnr 12.06.2020 16:16

Как создать блокнот Jupiter в VS Code

  1. Перейдите в палитру команд (Command + Shift + P)
  2. Найдите: «Jupyter: Create New Blank Notebook» и нажмите Enter.

Другие вопросы по теме