隐藏 IPython 中的所有警告

Hide all warnings in IPython

提问人:astrofrog 提问时间:1/27/2012 最后编辑:Peter Mortensenastrofrog 更新时间:7/22/2023 访问量:774835

问:

我需要生成 IPython 会话的截屏视频,并且为了避免混淆查看者,我想禁用来自不同包的调用发出的所有警告。有没有办法将 ipythonrc 文件配置为自动禁用所有此类警告?warnings.warn

Python 警告 ipython

评论


答:

1230赞 astrofrog 1/27/2012 #1

地方:

import warnings
warnings.filterwarnings('ignore')

里面。~/.ipython/profile_default/startup/disable-warnings.py

很多时候,看到一次警告是很有用的。这可以通过以下方式设置:

warnings.filterwarnings(action='once')

评论

15赞 Keith Hughitt 11/30/2013
也适用于 IPython 笔记本警告。不错的修复:)
7赞 AZhao 7/14/2015
@FrozenFlame,将其改回“默认” 请参见: docs.python.org/2/library/warnings.html
48赞 Vasco 11/11/2015
您也可以在笔记本中执行此操作,以便仅禁止显示一个特定笔记本中的(某些)警告
2赞 Catalina Chircu 3/5/2020
奇怪的事情发生在我身上,我在 Kaggle 笔记本上工作,即使我在脚本的开头设置,我还是会收到警告。如果这与我使用 TPU 加速器的事实有关,那么在这种情况下 TPU 是否有特定行为......我想知道。我不明白。warnings.filterwarnings('ignore')
1赞 SKPS 1/17/2022
只需确保在代码的开头调用即可!
65赞 matthiash 3/30/2017 #2

我通过在单元格中运行以下代码来隐藏粉红色框中的警告:

from IPython.display import HTML
HTML('''<script>
code_show_err=false; 
function code_toggle_err() {
 if (code_show_err){
 $('div.output_stderr').hide();
 } else {
 $('div.output_stderr').show();
 }
 code_show_err = !code_show_err
} 
$( document ).ready(code_toggle_err);
</script>
To toggle on/off output_stderr, click <a href="javascript:code_toggle_err()">here</a>.''')
5赞 ottowg 8/1/2019 #3

对于 JupyterLab,这应该有效 (@Alasja):

from IPython.display import HTML

HTML('''<script>
var code_show_err = false;
var code_toggle_err = function() {
    var stderrNodes = document.querySelectorAll('[data-mime-type="application/vnd.jupyter.stderr"]')
    var stderr = Array.from(stderrNodes)
    if (code_show_err){
        stderr.forEach(ele => ele.style.display = 'block');
    } else {
        stderr.forEach(ele => ele.style.display = 'none');
    }
    code_show_err = !code_show_err
}
document.addEventListener('DOMContentLoaded', code_toggle_err);
</script>
To toggle on/off output_stderr, click <a onclick="javascript:code_toggle_err()">here</a>.''')
14赞 robert 1/22/2020 #4

公认的答案在 Jupyter 中不起作用(至少在使用某些库时是这样)。

此处的 JavaScript 解决方案仅隐藏已显示的警告,而不隐藏将来将显示的警告。

为了在 Jupyter 和 JupyterLab 中隐藏/取消隐藏警告,我编写了以下脚本,该脚本本质上是将 CSS 切换为隐藏/取消隐藏警告。

%%javascript
(function(on) {
    const e = $("<a>Setup failed</a>");
    const ns = "js_jupyter_suppress_warnings";
    var cssrules = $("#" + ns);
    if(!cssrules.length)
        cssrules = $("<style id='" + ns + "' type='text/css'>div.output_stderr { } </style>").appendTo("head");
    e.click(function() {
        var s = 'Showing';
        cssrules.empty()
        if(on) {
            s = 'Hiding';
            cssrules.append("div.output_stderr, div[data-mime-type*='.stderr'] { display:none; }");
        }
        e.text(s + ' warnings (click to toggle)');
        on = !on;
    }).click();
    $(element).append(e);
})(true);

评论

2赞 Ben 2/10/2020
我收到错误“Javescript Error: $ is not defined”
1赞 Tobias Bergkvist 5/28/2020
对我也不行。我遇到了与 Ben 相同的错误(我正在使用 JupyterLab)。
0赞 Reza Keshavarz 11/13/2021
它在 Jupyter 和 JupyterLab 中都对我有用。您的安装可能存在一些问题。
0赞 Akhil prasannan 2/2/2022
对我有用,但这也会删除单元格中生成的任何其他输出。
0赞 Aleksandar Savkov 4/9/2023
只需查看官方选择的答案即可。这不太可能奏效。warnings
0赞 najmieh sadat safarabadi 7/22/2023 #5

您需要指定类别,否则即使使用上面的顶级解决方案,您也会收到警告

   warnings.filterwarnings("ignore", category=DeprecationWarning)