# Make sure that DeprecationWarning within this package always gets printed
warnings.filterwarnings('always', category=DeprecationWarning,
module=r'^{0}\.'.format(re.escape(__name__)))
这确实是非常糟糕的行为。 如果你觉得你真的必须这样做,请使用append=True
您能否详细说明这对您的应用程序来说是什么问题? 从评论来看,它听起来应该只影响 scikit-learn 中的DeprecationWarnings
。
(另见https://github.com/scikit-learn/scikit-learn/pull/6930中的相关讨论)
您能否详细说明为什么sklearn
会覆盖自定义警告配置?
如果添加append=True
,则不会覆盖未自定义的警告配置。
问题是我的应用程序全局状态不应受到导入包的影响。 我也不希望你做改变我的日志配置之类的事情。
如果添加 append=True,则不会覆盖未自定义的警告配置。
尝试过,通过从源代码安装 sklearn,并在sklearn.utils.__init__.py
手动提出弃用。 使用默认配置,它在调用python -c "import sklearn.utils"
时按预期发出警告。 如果我们将append=True
到warnings.filterwarnings
使用的sklearn/__init__.py
,则不再引发DeprecationWarning
。 我没有调查原因。
我同意目前的情况很糟糕,我只是想知道您在使用此设置时遇到了什么样的实际问题(除了原则上很糟糕的事实之外)。 对用例有很好的理解,也将帮助我们提出正确的解决方案。 这个问题在https://github.com/scikit-learn/scikit-learn/issues/9857 (特别参见 https://github.com/scikit-learn/scikit-learn/issues/9857#issuecomment- 333351913 和 https://github.com/scikit-learn/scikit-learn/issues/9857#issuecomment-333359072)概述了当前情况的原因。
将其作为https://github.com/scikit-learn/scikit-learn/issues/9857的副本结束(以避免在多个问题上进行相同的讨论)。 非常欢迎您在那里发表评论或提出解决方案。
最有用的评论
您能否详细说明为什么
sklearn
会覆盖自定义警告配置?如果添加
append=True
,则不会覆盖未自定义的警告配置。问题是我的应用程序全局状态不应受到导入包的影响。 我也不希望你做改变我的日志配置之类的事情。