隐藏 ipython 中的所有警告

Posted

技术标签:

【中文标题】隐藏 ipython 中的所有警告【英文标题】:Hide all warnings in ipython 【发布时间】:2012-02-20 08:28:21 【问题描述】:

我需要制作 ipython 会话的截屏视频,为了避免让观众感到困惑,我想禁用来自不同包的 warnings.warn 调用发出的所有警告。有没有办法将 ipythonrc 文件配置为自动禁用所有此类警告?

【问题讨论】:

【参考方案1】:

我终于明白了。地点:

import warnings
warnings.filterwarnings('ignore')

~/.ipython/profile_default/startup/disable-warnings.py 内。我把这个问题和答案留作记录,以防其他人遇到同样的问题。

经常看到一次警告很有用。这可以通过以下方式设置:

warnings.filterwarnings(action='once')

【讨论】:

也适用于 IPython 笔记本警告。很好的修复:) @FrozenFlame,你把它改回'默认'见:docs.python.org/2/library/warnings.html 您也可以在笔记本中执行此操作,以便在一个特定笔记本中仅抑制(某些)警告 有些奇怪的事情发生在我身上,我在 Kaggle 笔记本上工作,即使我在脚本开头设置了warnings.filterwarnings('ignore'),我还是会收到警告。是否应该与我使用 TPU 加速器的事实有关,在这种情况下 TPU 是否具有特定的行为……我想知道。我不明白。 像黄油一样工作!【参考方案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>.''')

【讨论】:

【参考方案3】:

对于 jupyter 实验室,这应该可以工作 (@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>.''')

【讨论】:

【参考方案4】:

接受的答案在 Jupyter 中不起作用(至少在使用某些库时)。

这里的 Javascript 解决方案只隐藏已经显示的警告,但不隐藏将来会显示的警告。

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

%%javascript
(function(on) 
const e=$( "<a>Setup failed</a>" );
const ns="js_jupyter_suppress_warnings";
var cs-s-rules=$("#"+ns);
if(!cs-s-rules.length) cs-s-rules = $("<style id='"+ns+"' type='text/css'>div.output_stderr   </style>").appendTo("head");
e.click(function() 
    var s='Showing';  
    cs-s-rules.empty()
    if(on) 
        s='Hiding';
        cs-s-rules.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);

【讨论】:

我收到错误“Javescript 错误:$ 未定义” 对我也不起作用。我遇到了与 Ben 相同的错误(我正在使用 JupyterLab)。 它在 Jupyter 和 JupyterLab 中都对我有用。您的安装可能有问题。

以上是关于隐藏 ipython 中的所有警告的主要内容,如果未能解决你的问题,请参考以下文章

ipython matplotlib

如何清除ipython中的变量?

在 IPython Notebook 中显示所有 pandas 数据框

Ipython Numpy pandas

Ipython没有可用的readline并且pip install readline错误

ipython 笔记本的 matplotlib 和 libpng 问题