繁体   English   中英

IPython/Jupyter Notebook 中的 PYTHONOPTIMIZE

[英]PYTHONOPTIMIZE in an IPython/Jupyter Notebook

如何在 IPython session 或 Jupyter Notebook 中分别禁用断言和文档字符串?

官方 python 文档这个 stackoverflow 问题这个类似问题的答案之后,我可能会“将PYTHONOPTIMIZE环境变量设置为1 ”。 好吧,如果我在这篇博文之后通过以下方式设置环境变量

%env PYTHONOPTIMIZE=1

我可以使用%env成功列出所有其他变量的值,但仍然出乎意料地__debug__ == TrueAssertionError 不同的值(如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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM