Есть ли способ для сценария Python автоматически определять, выполняется ли он в интерактивном режиме или нет? Кроме того, можно ли определить, используется ли ipython по сравнению с обычным исполняемым файлом c python?
Справочная информация: в моих скриптах на python обычно есть вызов exit (). Время от времени я запускаю сценарии в интерактивном режиме для отладки и профилирования, обычно в ipython. Когда я работаю в интерактивном режиме, я хочу подавить вызовы для выхода.
Разъяснение :
Предположим, у меня есть скрипт myscript.py, который выглядит следующим образом:
#!/usr/bin/python
...do useful stuff...
exit(exit_status)
Иногда я хочу запустить скрипт в уже запущенном сеансе IPython, говоря что-то вроде:
In [nnn]: %run -p -D myscript.pstats myscript.py
В конце скрипта вызов exit () приведет к зависанию ipython, в то время как он спрашивает меня, действительно ли я хочу выйти. Это незначительное раздражение при отладке (слишком незначительное для меня, чтобы позаботиться), но оно может испортить результаты профилирования: приглашение на выход включается в результаты профиля (что усложняет анализ, если я начинаю сеанс профилирования перед тем, как отправиться на обед) ,
То, что я хотел бы, это то, что позволяет мне изменить мой сценарий так, чтобы он выглядел так:
#!/usr/bin/python
...do useful stuff...
if is_python_running_interactively():
print "The exit_status was %d" % (exit_status,)
else:
exit(exit_status)