Загрузка скрипта Python в ipython в виде ячеек ipython

Мы можем использовать%run для выполнения скрипта Python внутри консоли ipython (не в записной книжке). Тем не менее, есть ли способ, которым мы можем запустить скрипт, и каждая строка скрипта загружается и выполняется как одна ячейка ввода ipython. Например, если скрипт:

if a == b:
  print 2*a

if a == 2*b:
  print a

Затем внутри ipython скрипт должен загружаться (и выполняться) следующим образом:

In [1]: if a == b:
   ...:     print 2*a
   ...:

In [2]: if a == 2*b:
   ...:     print a
   ...:

Я не знаю, возможно ли это вообще, но если это так, это будет очень полезно, так как я могу загрузить скрипт и затем выполнить ту часть кода, которую я хочу выполнить. Следующим вопросом будет то, сможем ли мы рекурсивно загрузить исходный код импортированного модуля (например, войти в отладчик). Таким образом, мы можем разрабатывать и тестировать изнутри самого ipython, не выполняя весь код с нуля (поскольку ipython сохраняет состояние для каждой ячейки).

2 ответа

Вы можете попробовать следующую вещь,
!python filename.py

Есть и другой вариант, вы можете скопировать и вставить свой код в ipython, используя% cpaste и в конце ctrl + d, чтобы выйти из
%cpaste

%edit
в ipython позволяет набирать код и сохранять в /tmp/ipython_edit_3xhsby0h/ipython_edit_*.py после выхода из режима редактирования выполняет список строк, записанных в файле выше :q выйти из режима редактирования
И чтобы перейти в режим отладки вы можете попробовать это
python -m pdb filename.py

Да, я считаю, что этот вопрос дает ответ. Подводя итог, вы хотите использовать магическую команду %load,

Если вы выполните ячейку, содержащую:

%load filename.py

содержание filename.py будет загружен в следующую ячейку. Вы можете редактировать и выполнять его как обычно.

Перейти к сценарию, ctrl+A тогда ctrl+c, перейдите в терминал, введите %pasteСкрипт вставлен и запущен

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