如果我在bash上运行python3 -O
,例如:
(base) [xyx@xyz python_utils]$ python3 -O Python 3.6.4 (default, Mar 28 2018, 11:00:11) [GCC 6.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> if __debug__:print("hello")
...
>>> exit()
我看到__debug__
变量被设置为0
,因为没有达到`print(“ hello”)调用。但是,如果我在python文件中写同一行,并以通常的方式运行它,例如
$ cat debugprint.py
if __debug__:print("hello")
$ python3 debugprint.py -O
hello
然后我们看到文本"hello"
,这表示__debug__
仍然为真。您知道如何解决此问题吗?
您需要将-O
传递给Python,而不是脚本。您可以通过在脚本命令行上将开关before脚本文件放置在命令行中来实现:
python3 -O debugprint.py
# ^^ ^^ ^^ any script command-line args go here.
# | \ scriptname
# arguments to Python itself
在脚本名称后面的任何命令行参数都将在[sys.argv
]列表中<< [传递到脚本:
$ cat debugargs.py
import sys
print(sys.argv[1:])
print(__debug__)
$ python3 debugargs.py -O
['-O']
True
python3 -O /tmp/test.py -O
['-O']
False
或者,您也可以将PYTHONOPTIMIZE
environment variable设置为非空值:
PYTHONOPTIMIZE