如何在python中为特殊变量__debug__
设置已安装python setup.py install
然后导入的模块?
目前,我正在开发一个在函数中包含以下语句的包:
...
if __debug__:
print "HERE", __debug__
...
当我在使用python -OO file.py
运行的程序中导入包时,调用最终调用此函数的函数时,我会在stdout中看到:
HERE False
HERE False
HERE False
...
因此,我认为if __debug__:
已转换为if True:
,与导入时定义的__debug__
变量分开。
因此,我也尝试使用python -OO setup.py install
安装软件包,但这也没有解决问题。当我在独立文件中使用__debug__
并使用优化执行它时,我能够看到if __debug__:
的预期行为,但是在我导入它时却没有。
如何使__debug__
变量适用于导入的模块?
答案 0 :(得分:2)
感谢评论部分提供的帮助。它终于成功了 - 运行:
python setup.py --help install
显示了一个选项列表。然后,很明显我正在安装优化不正确。我需要跑:
python setup.py install -O2
在编译模块时打开优化。关于@MarkDickinson发布的问题:python assert fires with -O,事实证明,字节编译模块实际上事先设置了if __debug__:
语句,这意味着事实上__debug__
确实在以后重新定义了影响if
阻止。
另一种选择是安装:
python setup.py install --no-compile
应保留所有内容,以便重新定义__debug__
。