Если вы вызовете интерпретатор cpython с параметром -i, он перейдет в интерактивный режим после завершения любых команд или сценариев, которые ему даны для запуска. Есть ли способ, в рамках программы, заставить переводчика сделать это, даже если ему не было дано -i? Очевидный вариант использования заключается в отладке путем интерактивной проверки состояния при возникновении исключительного условия.
Вы хотите кодовый модуль .
#!/usr/bin/env python import code code.interact("Enter Here")
Установите переменную окружения PYTHONINSPECT. Это также можно сделать в самом скрипте:
import os os.environ["PYTHONINSPECT"] = "1"
Для отладки неожиданных исключений вы также можете использовать этот приятный рецепт http://code.activestate.com/recipes/65287/
Рецепт , указанный в другом ответе с использованием sys.excepthook, звучит так, как вы хотите. В противном случае вы можете запустить code.interact при выходе из программы:
sys.excepthook
code.interact
import code import sys sys.exitfunc = code.interact
Лучший способ сделать это, о котором я знаю, это:
from IPython import embed embed()
, который разрешает доступ к переменным в текущей области и предоставляет вам все возможности IPython.