2012-06-18 128 views
1

我正在使用Python + ZOPE/ZODB/Repoze BFG(首字母縮寫詞全部變得相當混亂)+貼圖。python:是否有可能檢測到我是否在paster shell?

我有一個貼紙殼,我可以做運行:

paster --plugin repoze.bfg bfgshell site.ini zodb 

,一切工作正常。然而,我有一堆監控的東西被打開 - 將調試信息打印到stdout的線程 - 當我剛剛啓動shell時,並不需要運行。是否有可能以某種方式檢測啓動代碼是否在shell中運行?因此,如果代碼檢測到外殼是而不是,它將啓動這些線程,並且如果外殼,它就不會。

回答

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__ 
+0

簡而言之 - 謝謝! – Claudiu

相關問題