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__
Другие вопросы по тегам