520

I need to produce a screencast of an IPython session, and to avoid confusing viewers, I want to disable all warnings emitted by warnings.warn calls from different packages. Is there a way to configure the ipythonrc file to automatically disable all such warnings?

0

5 Answers 5

1236

Place:

import warnings
warnings.filterwarnings('ignore')

inside ~/.ipython/profile_default/startup/disable-warnings.py.

Quite often it is useful to see a warning once. This can be set by:

warnings.filterwarnings(action='once')
8
  • 15
    Also works for IPython notebook warnings. Nice fix :) Nov 30, 2013 at 1:23
  • 7
    @FrozenFlame, you change it back to 'default' See: docs.python.org/2/library/warnings.html
    – AZhao
    Jul 13, 2015 at 17:23
  • 48
    You can also execute this in the a notebook, in order to suppress only (certain) warnings in one specific notebook
    – Vasco
    Nov 11, 2015 at 14:13
  • 2
    Something odd happens to me, I work on Kaggle notebook, and even if I set warnings.filterwarnings('ignore') at the beginning of my script, I get warnings anyway. Should it be related to the fact that I use TPU accelerator, does TPU have a particular behaviour in this case ... I wonder. I do not understand. Mar 5, 2020 at 14:51
  • 1
    Just make sure to invoke at the beginning of the code!
    – SKPS
    Jan 17, 2022 at 13:41
65

I hide the warnings in the pink boxes by running the following code in a cell:

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>.''')
0
14

The accepted answer does not work in Jupyter (at least when using some libraries).

The JavaScript solutions here only hide warnings that are already showing but not warnings that would be shown in the future.

To hide/unhide warnings in Jupyter and JupyterLab I wrote the following script that essentially toggles CSS to hide/unhide warnings.

%%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);
5
  • 2
    I receive the error "Javescript Error: $ is not defined"
    – Ben
    Feb 10, 2020 at 10:02
  • 1
    Doesn't work for me either. I'm getting the same error as Ben (I'm using JupyterLab). May 28, 2020 at 3:36
  • It worked for me both in Jupyter and in JupyterLab. there may be some problem with your installation. Nov 13, 2021 at 6:07
  • Works for me, but this also removes any other output generated in the cell. Feb 2, 2022 at 14:28
  • Just look at the officially selected answer using warnings. This is unlikely to work. Apr 9, 2023 at 6:50
5

For JupyterLab, this should work (@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>.''')
1

you need to specify the category otherwise even with the top solution above you'd get warnings

   warnings.filterwarnings("ignore", category=DeprecationWarning)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.