Загрузка скрипта 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
Скрипт вставлен и запущен