我总是听到这个:
DeprecationWarning: integer argument expected, got float
我怎样才能让这条信息消失?在Python中有避免警告的方法吗?
我总是听到这个:
DeprecationWarning: integer argument expected, got float
我怎样才能让这条信息消失?在Python中有避免警告的方法吗?
当前回答
如果您正在使用日志记录(https://docs.python.org/3/library/logging.html)来格式化或重定向您的ERROR、NOTICE和DEBUG消息,您可以将WARNINGS从警告系统重定向到日志系统:
logging.captureWarnings(True)
它将捕获带有“py.warnings”标签的警告。此外,如果你想在不记录日志的情况下丢弃这些警告,你可以使用以下命令将日志级别设置为ERROR:
logging.getLogger("py.warnings").setLevel(logging.ERROR)
它将导致所有这些警告被忽略,而不会显示在您的终端或其他任何地方。
参见https://docs.python.org/3/library/warnings.html和https://docs.python.org/3/library/logging.html#logging.captureWarnings, captureWarnings设置为True不会捕获警告
在我的例子中,我用日志系统格式化了所有的异常,但是警告(例如scikit-learn)没有受到影响。
其他回答
传递正确的参数?: P
更严重的是,您可以在命令行中将参数-Wi::DeprecationWarning传递给解释器,以忽略弃用警告。
你应该修改你的代码,但以防万一,
import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)
如果您正在使用日志记录(https://docs.python.org/3/library/logging.html)来格式化或重定向您的ERROR、NOTICE和DEBUG消息,您可以将WARNINGS从警告系统重定向到日志系统:
logging.captureWarnings(True)
它将捕获带有“py.warnings”标签的警告。此外,如果你想在不记录日志的情况下丢弃这些警告,你可以使用以下命令将日志级别设置为ERROR:
logging.getLogger("py.warnings").setLevel(logging.ERROR)
它将导致所有这些警告被忽略,而不会显示在您的终端或其他任何地方。
参见https://docs.python.org/3/library/warnings.html和https://docs.python.org/3/library/logging.html#logging.captureWarnings, captureWarnings设置为True不会捕获警告
在我的例子中,我用日志系统格式化了所有的异常,但是警告(例如scikit-learn)没有受到影响。
这些答案都不适合我,所以我将发布我的方法来解决这个问题。我在main.py脚本的开头使用了以下代码,它工作得很好。
原封不动地使用下面的代码(复制粘贴):
def warn(*args, **kwargs):
pass
import warnings
warnings.warn = warn
例子:
import "blabla"
import "blabla"
def warn(*args, **kwargs):
pass
import warnings
warnings.warn = warn
# more code here...
# more code here...
码头工人的解决方案
在运行python应用程序之前禁用ALL警告 您也可以禁用dockerized测试
ENV PYTHONWARNINGS="ignore::DeprecationWarning"