【问题标题】:Manage warnings in a python package管理 python 包中的警告
【发布时间】:2020-02-12 04:51:30
【问题描述】:

我正在开发一个 python 库,我们有时会使用 pythons 警告模块显示用户警告。 我们现在希望能够根据传递给 python 解释器的标志关闭所有这些警告。

我读到__init__ 文件实际上是在导入库时首先调用的,但将

import warnings
warnings.simplefilter('ignore')

在最高级别__init__.py 不会改变任何东西。

这些选项是否仅适用于当前文件? 我正在寻找一个可以关闭库中所有警告的地方,因为我不想在每个文件中单独管理它。

【问题讨论】:

标签: python import package warnings suppress-warnings


【解决方案1】:

对于 Jupyter Notebook,你可以试试这个:- 转到 '/home/user/.ipython/profile_default/startup/start.py' 并加载此模块(如果 start.py 不存在,请创建一个。)

【讨论】:

    【解决方案2】:

    如果这被证明是可怕的 unpythonic,我不会感到惊讶,但对于类似的问题(跨模块的通用格式),我在 __init__.py

    def warning_on_one_line(message, category, filename, lineno, file=None, line=None):
        return '%s:%s: %s: %s\n' % (filename, lineno, category.__name__, message)
    
    warnings.formatwarning = warning_on_one_line
    

    然后在子模块中:

    from package_name import warnings
    

    这会将__init__.py 中所做的更改带到所有子模块中。

    【讨论】:

    • 谢谢你的提示,但我想在每个子模块中都提供这个还是很烦人的。
    猜你喜欢
    • 1970-01-01
    • 2021-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-13
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    相关资源
    最近更新 更多