作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在我的 Django 应用程序中,当我导入一个第三方库时,我在控制台中收到此警告:
the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
但是,如果我在 Python shell 中执行导入,那么一切正常。我想在 Django 中实现相同的行为。这是我根据其他操作系统线程中的答案尝试过的:
import warnings
from django.utils.deprecation import RemovedInDjango110Warning
warnings.filterwarnings(action="ignore", category=RemovedInDjango110Warning)
以上代码导致了另一条错误消息,指出 RemovedInDjango110Warning 不存在。我也试过这个:
import warnings
def fxn():
warnings.warn("deprecated", DeprecationWarning)
with warnings.catch_warnings():
warnings.simplefilter("ignore")
fxn()
from third_party_lib import some_module
但我仍然收到完全相同的错误消息。因此,似乎以前对此问题的所有答案都已过时。我们需要一些新的修复。谢谢!
我也试过这个:
import warnings
with warnings.catch_warnings():
warnings.filterwarnings("ignore",category=DeprecationWarning)
from third_party_lib import some_module
但是没有效果。
最佳答案
您试过的代码有几个问题。如果要过滤 PendingDeprecationWarning
,则应在代码中使用 PendingDeprecationWarning
。您的代码使用了 DeprecationWarning
和 RemovedInDjango110Warning
,它们是不同的警告。其次,文档中的 fxn()
函数是一个创建警告的示例函数。将它包含在您的代码中没有意义。
您可以过滤所有未决的弃用警告
import warnings
warnings.simplefilter("ignore", category=PendingDeprecationWarning)
然而,这可能会在您自己的代码中隐藏您应该修复的未决弃用。更好的方法是使用上下文管理器,在导入第三方库时过滤掉警告。
with warnings.catch_warnings():
warnings.simplefilter("ignore", category=PendingDeprecationWarning)
from third_party_lib import some_module
关于python - 无法抑制弃用警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40993553/
我是一名优秀的程序员,十分优秀!