[英]PYTHONOPTIMIZE in an IPython/Jupyter Notebook
如何在 IPython session 或 Jupyter Notebook 中分别禁用断言和文档字符串?
在官方 python 文档、这个 stackoverflow 问题和这个类似问题的答案之后,我可能会“将PYTHONOPTIMIZE
环境变量设置为1
”。 好吧,如果我在这篇博文之后通过以下方式设置环境变量
%env PYTHONOPTIMIZE=1
我可以使用%env
成功列出所有其他变量的值,但仍然出乎意料地__debug__ == True
和AssertionError
。 不同的值(如2
或字符串"1"
)也不成功。
奖励问题:是否可以仅针对特定(本地)库禁用assert
,例如在使用import myfancylib
之后, myfancylib.eggs()
不会raise
?
我不知道有什么方法可以仅针对当前活动的 session 禁用assert
。但是,还有其他几个选项。
当前 conda 环境的非易失性禁用assert
:
_disable_assert = True
_disable_assert_msg = "To make your changes take effect please Save and restart Jupyter Notebook\n"
if _disable_assert:
try:
assert False
print("OK - assert disabled")
except AssertionError:
import os
import sys
os.system("conda env config vars set PYTHONOPTIMIZE=1")
print(_disable_assert_msg, file=sys.stderr)
assert False, _disable_assert_msg
else:
try:
assert False
import os
import sys
os.system("conda env config vars unset PYTHONOPTIMIZE")
print(_disable_assert_msg, file=sys.stderr)
_zero_division = 1/0
except AssertionError:
print("OK - assert enabled")
为单元格禁用assert
:
%%python -O
# Only for one cell. This cell is run in a separate process.
import sys
import os
print(__debug__)
print(sys.argv)
print(os.environ)
try:
assert False
print("Assert disable")
except AssertionError:
print("Assert enable")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.