我需要生成一个IPython会话的屏幕录制,为了避免混淆观众,我想禁用来自不同包的warnings.warn调用发出的所有警告。有没有办法配置ipythonrc文件来自动禁用所有此类警告?
warnings.warn
的地方:
import warnings warnings.filterwarnings('ignore')
~/.ipython/profile_default/startup/disable-warnings.py内部。
~/.ipython/profile_default/startup/disable-warnings.py
通常情况下,只查看一次警告是很有用的。可以通过以下方法设置:
warnings.filterwarnings(action='once')
我通过在单元格中运行以下代码来隐藏粉红色框中的警告:
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>.''')
对于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>.''')
接受的答案在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);