如何在 Linux 终端上抑制 Python DeprecationWarnings?

发布于 2024-09-05 17:46:59 字数 669 浏览 9 评论 0原文

我使用 easy_install 安装了 i18ndude(Plone 中使用的国际化实用程序)。

当我尝试在终端上运行实用程序 i18ndude 时,我得到:

/usr/local/lib/python2.6/dist-packages/i18ndude-3.1.2-py2.6.egg/i18ndude/odict.py:7: DeprecationWarning: object.__init__() takes no parameters
  dict.__init__(self, dict)

从命令行调用该实用程序时如何抑制这些警告消息?是否可以?我知道理论上我应该安装其他 Python 解释器,并从中调用 i18ndude,但我想要一种更简单的方法(比如参数或类似的东西)。

顺便说一句,我正在使用 Plone 官方网站

I installed i18ndude (an internationalization utility to be used in Plone) using easy_install.

When I try to run the utility i18ndude on my terminal, I get:

/usr/local/lib/python2.6/dist-packages/i18ndude-3.1.2-py2.6.egg/i18ndude/odict.py:7: DeprecationWarning: object.__init__() takes no parameters
  dict.__init__(self, dict)

How do I suppress these warning messages when calling the utility from command line? Is it possible? I know in theory I should install other Python interpreter, and call i18ndude from that, but I would like a simpler approach (like a parameter or something like that).

BTW, I'm using a i18ndude script from Plone official site.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

别靠近我心 2024-09-12 17:46:59

可以使用重定向,但它会抑制发送到该“流”的所有消息;例如,

i178ndude 2>/dev/null

将流 2 发送到空设备(通常是程序的 stderr,但可以将弃用警告发送到其他流)。这就是“即使你不知道如何修复它”的修复方法。事实上,有一个选项 -W,可以像这样使用: -Wignore::DeprecationWarning 或简单地 -Wignore 忽略所有警告。您可以编写一个在程序上调用 python 解释器的脚本,或者更逻辑地使用 #!/usr/bin/env python -Wignore 之类的内容修改 prog 的 #! : :弃用警告

Redirection can be used, but it would suppress all the messages sent to that "stream"; e.g.

i178ndude 2>/dev/null

sends to the null device the stream 2 (normally the stderr of a program, but deprecation warnings could be sent to other streams). This is the "fix it even though you don't know how" fix. Indeed there's an option, -W, that can be used like this: -W ignore::DeprecationWarning or simply -W ignore that ignores all warnings. You can write a script that call the python interpreter on your program, or more logically modify the #! of the prog with something like #!/usr/bin/env python -W ignore::DeprecationWarning

〆凄凉。 2024-09-12 17:46:59

如果作为脚本运行,您可以使用:

#!/usr/bin/env python -W ignore::DeprecationWarning

If running as a script you could use:

#!/usr/bin/env python -W ignore::DeprecationWarning
千寻… 2024-09-12 17:46:59

您可以暂时抑制警告

如果您使用的代码知道会引发警告(例如已弃用的函数),但不想看到该警告,则可以使用 catch_warnings 上下文管理器来抑制警告:

import warnings

def fxn():
    warnings.warn("deprecated", DeprecationWarning)

with warnings.catch_warnings():
    warnings.simplefilter("ignore")
    fxn()

在上下文管理器中,所有警告都将被忽略。 这允许您使用已知已弃用的代码,而不必看到警告,同时不会抑制对可能不知道其使用已弃用代码的其他代码的警告。注意:这只能在单线程应用程序中保证。如果两个或多个线程同时使用 catch_warnings 上下文管理器,则行为未定义。

You can temporarily suppress warnings:

If you are using code that you know will raise a warning, such as a deprecated function, but do not want to see the warning, then it is possible to suppress the warning using the catch_warnings context manager:

import warnings

def fxn():
    warnings.warn("deprecated", DeprecationWarning)

with warnings.catch_warnings():
    warnings.simplefilter("ignore")
    fxn()

While within the context manager all warnings will simply be ignored. This allows you to use known-deprecated code without having to see the warning while not suppressing the warning for other code that might not be aware of its use of deprecated code. Note: this can only be guaranteed in a single-threaded application. If two or more threads use the catch_warnings context manager at the same time, the behavior is undefined.

别理我 2024-09-12 17:46:59

请参阅 cmdoption-W

-W arg

警告控制。默认情况下,Python 的警告机制将警告消息打印到 sys.stderr。典型的警告消息具有以下形式:

文件:行:类别:消息

默认情况下,每个警告会针对其出现的每个源代码行打印一次。此选项控制打印警告的频率。

可以给出多个-W选项;当警告匹配多个选项时,将执行最后一个匹配选项的操作。无效的 -W 选项将被忽略(但是,当发出第一个警告时,会打印一条有关无效选项的警告消息)。

See cmdoption-W:

-W arg

Warning control. Python’s warning machinery by default prints warning messages to sys.stderr. A typical warning message has the following form:

file:line: category: message

By default, each warning is printed once for each source line where it occurs. This option controls how often warnings are printed.

Multiple -W options may be given; when a warning matches more than one option, the action for the last matching option is performed. Invalid -W options are ignored (though, a warning message is printed about invalid options when the first warning is issued).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文