Python';s__调试__特殊变量不适用于导入的模块
如何使python中的特殊变量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
\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
?