我在 Python 中遇到了一个奇怪的警告问题。我使用了一个包含许多模块的大型代码库,但我无法创建一个能够重现此问题的小脚本,请注意没有最小示例。每当出现警告时,程序将其视为错误并退出。这不是针对特定类型的警告,似乎是所有类型的警告(至少是 RuntimeWarning,PendingDeprecationWarning 和 UserWarning)。我无法轻松地防止这些警告,需要广泛修改其他人的工作,并且它们对代码的功能不构成问题。
以下是我尝试过但未成功的一些方法:
命令行标志 -W
检查确保 $PYTHONWARNINGS 没有被设置
验证 sys.warnoptions 是否为空
在脚本前面加上:
我已经在使用日志记录,现在将日志记录设置更改为:
在这两种情况下,我仍然会收到一个 RuntimeWarning 警告,随后程序退出。
再次编辑:
我找到了有问题的代码行,但我不明白为什么它会引起这个问题:
如果有人能帮我解释一下,那就太好了。
以下是我尝试过但未成功的一些方法:
命令行标志 -W
检查确保 $PYTHONWARNINGS 没有被设置
验证 sys.warnoptions 是否为空
在脚本前面加上:
import warnings
warnings.filterwarnings("ignore")
我已经在使用日志记录,现在将日志记录设置更改为:
logging.basicConfig(level=logging.DEBUG)
logging.captureWarnings(True)
有没有真正的Python大师可以帮忙?
编辑:
我遇到的问题是除以零。应该正确返回NaN(稍后将转换为零)。出于速度的考虑,我必须使用numpy数组分割,将其拆分成循环不可行。这里有两件我尝试过的事情,其中arr2包含了零:
np.seterr(divide='ignore')
z = np.divide(arr1,arr2)
或者
with np.errstate(divide='ignore'):
z = np.divide(arr1,arr2)
在这两种情况下,我仍然会收到一个 RuntimeWarning 警告,随后程序退出。
再次编辑:
我找到了有问题的代码行,但我不明白为什么它会引起这个问题:
warnings.simplefilter("ignore",lineno=32)
如果有人能帮我解释一下,那就太好了。