隐藏ipython中的所有警告

ast*_*rog 255 python warnings ipython

我需要制作一个ipython会话的截屏视频,并且为了避免混淆观众,我想禁用warnings.warn来自不同包的调用发出的所有警告.有没有办法配置ipythonrc文件来自动禁用所有这些警告?

ast*_*rog 587

我终于明白了.地点:

import warnings
warnings.filterwarnings('ignore')
Run Code Online (Sandbox Code Playgroud)

在里面~/.ipython/profile_default/startup/disable-warnings.py.我要离开这个问题并回答记录,以防其他人遇到同样的问题.

通常一次看到警告是有用的.这可以通过以下方式设置:

warnings.filterwarnings(action='once')
Run Code Online (Sandbox Code Playgroud)

  • 您也可以在笔记本中执行此操作,以便仅抑制特定笔记本中的(某些)警告 (28认同)
  • @FrozenFlame,你把它改回'默认'参见:https://docs.python.org/2/library/warnings.html (6认同)
  • 也适用于IPython笔记本警告。好的修复方法:) (4认同)
  • 不适用于django DEBUG警告:( (4认同)
  • 我身上发生了一些奇怪的事情,我在 Kaggle 笔记本上工作,即使我在脚本开头设置了“warnings.filterwarnings('ignore')”,我还是会收到警告。这是否与我使用 TPU 加速器有关,在这种情况下 TPU 是否有特定的行为......我想知道。我不明白。 (2认同)

mat*_*ash 54

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

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>.''')
Run Code Online (Sandbox Code Playgroud)

  • 尽管投票否决,但仍然相信它是一个有用的提示,因为与公认的答案相比,它更容易切换。 (2认同)

rob*_*ert 6

接受的答案在 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);
Run Code Online (Sandbox Code Playgroud)

  • 我收到错误“Javascript 错误:$ 未定义” (2认同)

小智 5

对于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>.''')
Run Code Online (Sandbox Code Playgroud)