如何检查是不是从脚本中设置了 python 调试选项

Posted

技术标签:

【中文标题】如何检查是不是从脚本中设置了 python 调试选项【英文标题】:How do I check if the python debug option is set from within a script如何检查是否从脚本中设置了 python 调试选项 【发布时间】:2010-12-08 06:35:05 【问题描述】:

如果我处于调试模式,我想做其他事情,而不是在我不处于调试模式时。

if DEBUG:
    STORED_DATA_FILE = os.path.join(TEMP_DIR, 'store.dat')
    LOG_LEVEL = logging.DEBUG
    print "debug mode"
else:
    STORED_DATA_FILE = os.path.join(SCRIPT_PATH, 'store.dat')
    LOG_LEVEL = logging.INFO
    print "not debug mode"

然后:

python script.py
not debug mode

python -d script.py
debug mode

我怎样才能检测到它?它肯定没有使用__debug__ 变量。

【问题讨论】:

好吧,澄清以下问题。我真正想做的就是从一般环境中获取一些信息,但我尝试设置一个环境变量并在 os.environ 中查找它,但这并不总是有效。 -d 选项无关:Python: How to detect debug interpreter ***.com/questions/27748132/… 这个答案对我有用。 【参考方案1】:

您可以将python -O__debug__ 变量一起使用

-O 表示优化。所以__debug__ 是假的

-d 为解析器打开调试,这不是你想要的

【讨论】:

是的,-O持续监控脚本,甚至不需要重新加载【参考方案2】:

使用-d 命令行选项或 PYTHONDEBUG 环境变量启用解析器调试模式,从 python 2.6 开始反映在sys.flags.debug 中。但是你确定这就是你要找的吗?

【讨论】:

这适用于 2.6 及更高版本,谢谢。现在是否有人对 2.5 及以下有答案?

以上是关于如何检查是不是从脚本中设置了 python 调试选项的主要内容,如果未能解决你的问题,请参考以下文章

如何检查是不是在 qtablewidget 中选中了复选框?

引导多选不是一个功能 - 不检查多选脚本

测试是不是在 R 中设置了函数的参数

Shell之脚本检查与调试

如何检查是不是使用了连接池

单选按钮中设置了checked="checked"为默认时,利用JS获取单选按钮的值的,一开始不能获取到默认的值