Python';s__调试__特殊变量不适用于导入的模块

Python';s__调试__特殊变量不适用于导入的模块,python,python-2.7,Python,Python 2.7,如何使python中的特殊变量\uuuu debug\uuu适用于使用python setup.py install安装并导入的模块 目前,我正在开发一个在函数中包含以下语句的包: ... if __debug__: print "HERE", __debug__ ... 当我在使用python-OO file.py运行的程序中导入包,并调用最终调用此函数的函数时,我在stdout中看到: HERE False HERE False HERE F

如何使python中的特殊变量
\uuuu debug\uuu
适用于使用
python setup.py install安装并导入的模块

目前,我正在开发一个在函数中包含以下语句的包:

     ...
     if __debug__:
         print "HERE", __debug__
     ...
当我在使用
python-OO file.py运行的程序中导入包,并调用最终调用函数的函数时,我在stdout中看到:

HERE False
HERE False
HERE False
...
因此,这使我认为,
if\uu debug\uu:
已转换为
if True:
独立于导入时定义的
\uu debug\uu
变量

因此,我也尝试使用
python-OO setup.py install安装包,但这也没有解决问题。当我在一个独立文件中使用
if\uu调试:
并通过优化执行它时,我能够看到
\uu调试\uuu
的预期行为,但在导入它时却看不到


如何使
\uu调试\uu
变量适用于导入的模块?

感谢评论部分的帮助。它最终成功了-运行:

python setup.py --help install
显示了一个选项列表。然后,很明显我安装的优化不正确。我需要跑:

python setup.py install -O2
在编译模块时启用优化。关于@MarkDickinson发布的问题:,事实证明编译模块的字节实际上预先设置了
if
语句,这意味着
\uu调试
确实在以后重新定义,而对
if
块没有影响

另一种选择是使用以下设备安装:

python setup.py install --no-compile

这个问题可能会帮助你:你没有安装
.py
文件吗?谢谢,@MarkDickinson,我会检查一下。乍一看,这可能是另一个问题,但我还不确定。@user2357112,您的确切意思是什么?您安装的软件包是否只有此模块的
.pyc
文件,而没有相应的
.py