Как работает волшебная %paste в IPython'е?

Я хочу скопировать в IPython уже отступленный код Python / целые функции и классы. Каждый раз, когда я пытаюсь это сделать, отступы искажаются, и я получаю следующее сообщение об ошибке:

IndentationError: unindent does not match any outer indentation level (<ipython-input-23-354f8c8be51b>, line 12).

Если вы хотите вставить код в IPython, попробуйте воспользоваться магическими функциями %paste и %cpaste.

Комментарии к вопросу (1)
Решение

Вы не можете копировать в IPython напрямую. Вот шаги:

  1. Скопируйте строки, которые вы хотите скопировать в IPython, в буфер обмена
  2. Введите %paste в IPython
  3. Нажмите Enter
  4. Прибыль!
Комментарии (5)

Разъяснение по поводу шагов:

  • Сначала скопируйте целевые строки в буфер обмена.

  • Введите в приглашение iPython:

    • Если на Tkinter: введите %paste.
    • Иначе: введите %cpaste
  • Вставьте (Ctrl-V) и нажмите Enter.

  • Затем введите -- и нажмите Enter.

Например:

In [1]: %cpaste
Pasting code; enter '--' alone on the line to stop or use Ctrl-D.
:for l in "Hello World":
:    print l,
:--
H e l l o   W o r l d
Комментарии (1)

По состоянию на оболочкой IPython 5 вы не'т нужна никакая магия, команда, просто вставьте его

спасибо prompt_toolkit, оболочкой IPython теперь поддерживает:

  • подсветка синтаксиса при вводе
  • Реальные многострочного редактирования клавиши (со стрелками вверх и вниз перемещаться между строк)
  • Многострочная вставка без нарушения абзацного отступа или немедленное выполнение кода
  • Лучше автозавершение кода интерфейс (мы планируем улучшить, что больше) опционально поддержка мыши

Подробнее об этом здесь

Обновления оболочкой IPython` до последней версии

pip install ipython --upgrade 
Комментарии (6)

Для работы %paste требуется Tkinter. Если вы используете ubuntu, вы можете установить его следующим образом

sudo apt-get install python-tk

Если вы на Python3

sudo apt-get install python3-tk

Затем перезапустите ipython и используйте %paste для вставки из буфера обмена.

Комментарии (0)

Для пользователей Ubuntu, которые находятся на Python 3.

В питон-тк для Python 2.

Чтобы сделать работу %паста `на Python 3, установить питон3-ТК пакет:

sudo apt-get install python3-tk
Комментарии (0)

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

Во-первых, чтобы подтвердить, что @Эол сказал, одним из способов решения ОП'ы проблемы-отключить автоматический отступ первой команды %автоотступа и вставкой (не требуется, если вы используете%пасты, конечно).

Теперь, чтобы добавить больше информации к тому, что уже есть здесь, еще один полезный режим в IPython-это %doctest_mode, который позволяет копировать вставить пример и испытание фрагментов из док строк. Это также полезно для выполнения интерактивном питон выходной сеанс, который вы можете найти в документации и в интернете на форумах, без того, чтобы сначала вырезать командные строки.

Комментарии (0)