Как я могу начать интерактивную сессию 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

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