正在运行python3,并且使用-O将调试设置为OFF

问题描述 投票:1回答:1

如果我在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__仍然为真。您知道如何解决此问题吗?

python python-3.x debugging command-line-arguments
1个回答
2
投票

您需要将-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

© www.soinside.com 2019 - 2024. All rights reserved.