gpt4 book ai didi

python - 使用 -O 将调试设置为 OFF 运行 python3

转载 作者:行者123 更新时间:2023-12-02 02:59:20 25 4
gpt4 key购买 nike

如果我在 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__ 仍然是 true。你知道如何解决这个问题吗?

最佳答案

您需要将 -O 传递给 Python,而不是传递给您的脚本。您可以通过将开关放在命令行上的脚本文件之前来实现:

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为非空值:

$ export PYTHONOPTIMIZE=1
python3 /tmp/test.py # no command-line switches
[]
False

关于python - 使用 -O 将调试设置为 OFF 运行 python3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60351790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com