Как я могу начать интерактивную сессию Python/ipython с середины моей программы Python?
У меня есть программа на Python, которая сначала выполняет некоторые задачи, а затем в определенных условиях переходит в интерактивный режим, где пользователь имеет доступ к интерактивной консоли Python с областью действия текущей программы. Прямо сейчас я делаю это, используя модуль кода, вызывая code.InteractiveConsole(globals()). Взаимодействовать ('') (см. http://docs.python.org/2/library/code.html).
Моя проблема заключается в том, что в получаемой интерактивной консоли отсутствуют некоторые функции, которые я обычно получаю со стандартной консолью Python (то есть той, которую вы получаете, набрав "python" в терминале), например запоминание предыдущей команды и т. Д. Есть ли способ получить ту же интерактивную консоль в середине моей программы на python или, что еще лучше, интерактивную консоль ipython?
2 ответа
Просто используйте IPython.embed()
где вы сейчас используете code.InteractiveConsole(globals()).interact('')
,
Убедитесь, что вы импортируете IPython, прежде чем сделать это, хотя:
import IPython
# lots of code
# even more code
IPython.embed()
Вы можете использовать встроенныйфункция (доступна в Python 3.7+) для запуска интерактивной оболочки IPython сIPython.embed()
. Это хорошо, так как это короче для ввода (и не требует импорта).
По умолчанию запускает отладчик Python. Чтобы запустить оболочку ipython, вы должны установить переменную окруженияPYTHONBREAKPOINT
бытьIPython.embed
.
В Linux :
Запустите или добавьте в свой~/.bashrc
или~/.profile
:
export PYTHONBREAKPOINT="IPython.embed"
Для получения дополнительной информации оbreakpoint()
, см. PEP 553