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

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

【问题讨论】:

    标签: python warnings ipython


    【解决方案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 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);
        

        【讨论】:

        • 我收到错误“Javescript 错误:$ 未定义”
        • 对我也不起作用。我遇到了与 Ben 相同的错误(我正在使用 JupyterLab)。
        • 它在 Jupyter 和 JupyterLab 中都对我有用。您的安装可能有问题。
        猜你喜欢
        • 1970-01-01
        • 2016-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多