隐藏 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 Notebook 中显示所有 pandas 数据框