Я хочу скопировать в IPython уже отступленный код Python / целые функции и классы. Каждый раз, когда я пытаюсь это сделать, отступы искажаются, и я получаю следующее сообщение об ошибке:
IndentationError: unindent does not match any outer indentation level (<ipython-input-23-354f8c8be51b>, line 12)
.
Если вы хотите вставить код в IPython, попробуйте воспользоваться магическими функциями %paste и %cpaste
.
Разъяснение по поводу шагов:
Сначала скопируйте целевые строки в буфер обмена.
Введите в приглашение iPython:
%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
По состоянию на оболочкой IPython 5 вы не'т нужна никакая магия, команда, просто вставьте его
спасибо
prompt_toolkit
,оболочкой IPython
теперь поддерживает:
- подсветка синтаксиса при вводе
- Реальные многострочного редактирования клавиши (со стрелками вверх и вниз перемещаться между строк)
- Многострочная вставка без нарушения абзацного отступа или немедленное выполнение кода
- Лучше автозавершение кода интерфейс (мы планируем улучшить, что больше) опционально поддержка мыши
Подробнее об этом здесь
Обновления оболочкой IPython` до последней версии
pip install ipython --upgrade
Для работы %paste
требуется Tkinter
. Если вы используете ubuntu, вы можете установить его следующим образом
sudo apt-get install python-tk
Если вы на Python3
sudo apt-get install python3-tk
Затем перезапустите ipython и используйте %paste
для вставки из буфера обмена.
Одним из полезных ответов было потеряно в комментариях, поэтому хотел повторить его вместе с добавление ссылки на другую полезную магическую функцию оболочкой IPython.
Во-первых, чтобы подтвердить, что @Эол сказал, одним из способов решения ОП'ы проблемы-отключить автоматический отступ первой команды %автоотступа и вставкой (не требуется, если вы используете
%пасты, конечно).
Теперь, чтобы добавить больше информации к тому, что уже есть здесь, еще один полезный режим в IPython-это %doctest_mode
, который позволяет копировать вставить пример и испытание фрагментов из док строк. Это также полезно для выполнения интерактивном питон выходной сеанс, который вы можете найти в документации и в интернете на форумах, без того, чтобы сначала вырезать командные строки.