1

我正在使用 Python + ZOPE/ZODB/Repoze BFG(首字母缩略词都变得相当混乱)+ paste。

我有一个可以通过以下方式运行的贴纸外壳:

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

一切正常。然而,我有一堆被打开的监控东西——将调试信息打印到标准输出的线程——当我刚刚启动 shell 时,它们真的不需要运行。是否有可能以某种方式检测启动代码是否在 shell 中运行?因此,如果代码检测到 shell打开,它将启动这些线程,如果 shell打开,则不会。

4

1 回答 1

1

bfgshell 将在安装时使用 IPython,否则使用codeInteractiveInterpreter。您可以使用以下方法测试任何一个:

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__
于 2012-06-19T09:32:40.867 回答