在我的Django应用程序中,当我导入一个第三方库时,我在控制台中收到此警告:
不推荐使用imp模块以支持importlib;请参阅模块的文档以了解其他用途
但是,如果我在Python shell中进行导入,那么一切正常。我想在Django中实现相同的行为。这是我根据其他OS线程中的答案尝试的:
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
但它没有效果。
答案 0 :(得分:5)
您尝试过的代码存在一些问题。如果您要过滤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