首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行python3,并将调试设置为使用-O关闭

运行python3,并将调试设置为使用-O关闭
EN

Stack Overflow用户
提问于 2020-02-22 11:39:18
回答 1查看 274关注 0票数 2

如果我在bash上运行python3 -O,比如:

代码语言:javascript
复制
(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文件中写入相同的行并按照通常的方式运行它,如下所示

代码语言:javascript
复制
$ cat debugprint.py
if __debug__:print("hello")
$ python3 debugprint.py -O
hello

然后我们看到文本"hello",这意味着__debug__仍然是真的。你知道怎么解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-22 11:43:44

您需要将-O传递给Python,而不是传递给脚本。为此,您可以将开关放在命令行的脚本文件前面:

代码语言:javascript
复制
python3 -O debugprint.py
#       ^^    ^^          ^^ any script command-line args go here.
#        |      \ scriptname
# arguments to Python itself

脚本名称后面的任何命令行参数都将传递给sys.argv列表中的脚本:

代码语言:javascript
复制
$ 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设置为非空值:

代码语言:javascript
复制
$ export PYTHONOPTIMIZE=1
python3 /tmp/test.py  # no command-line switches
[]
False
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60351790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档