Ответ 1
Вы не можете напрямую копировать в IPython. Это следующие шаги:
- Скопируйте строки, которые вы хотите скопировать в IPython, в буфер обмена
- Введите
%paste
в IPython - Нажмите enter
- Profit!
Я хочу скопировать уже отпечатанный код Python/целые функции и классы в IPython. Каждый раз, когда я пытаюсь вдавить, ввернуто, и я получаю следующее сообщение об ошибке:
IndentationError: unindent does not match any outer indentation level (<ipython-input-23-354f8c8be51b>, line 12)
If you want to paste code into IPython, try the %paste and %cpaste magic functions.
Вы не можете напрямую копировать в IPython. Это следующие шаги:
%paste
в IPythonПрояснение этапов:
Сначала скопируйте целевые строки в буфер обмена.
Введите запрос 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
Затем перезапустите ipython и используйте %paste
для вставки из вашего буфера обмена.
Один из полезных ответов был потерян в комментариях, поэтому он хотел повторить его вместе с добавлением ссылки на другую полезную магическую функцию IPython.
Сначала, чтобы подтвердить то, что сказал @EOL, один из способов решения проблемы с OP состоит в том, чтобы отключить автоиндексацию, сначала выполнив %autoindent
и выполнив вставку (не обязательно, если вы используете %paste
, конечно).
Теперь, чтобы добавить дополнительную информацию к тому, что уже существует здесь, еще один полезный режим в IPython - %doctest_mode
, который позволяет копировать пример вставки и тестировать фрагменты из строк документа. Это также полезно для выполнения интерактивного вывода сеанса python, который можно найти в документации и онлайн-форумах, без необходимости сначала вычеркивать строки приглашения.
Для пользователей ubuntu, которые находятся на Python 3.
python-tk
предназначен для Python 2.
Чтобы сделать работу %paste
на Python 3, установите пакет python3-tk
:
sudo apt-get install python3-tk