python: возможно ли определить, нахожусь ли я в скорлупе?
Я использую Python + ZOPE/ZODB/Repoze BFG (аббревиатуры все путаются) + paster.
У меня есть оболочка paster, которую я могу запустить, выполнив:
paster --plugin repoze.bfg bfgshell site.ini zodb
Все отлично работает Тем не менее, у меня есть куча средств мониторинга, которые включаются - потоки, которые печатают отладочную информацию на стандартный вывод - которые действительно не нужно запускать, когда я только запускаю оболочку. Можно ли как-то определить, запущен ли код запуска в оболочке? Таким образом, если код обнаружит, что оболочка не включена, он запустит эти потоки, а если оболочка включена, не будет.
1 ответ
Решение
bfgshell будет использовать IPython при установке или code
InteractiveInterpreter в противном случае. Вы можете проверить любой из них с:
import sys
def in_shell():
# Interactive prompt sets sys.ps1
if hasattr(sys, 'ps1'):
return True
# __IPYTHON__ is defined when running under IPython
return '__IPYTHON__' in __builtins__