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?
Asked
Active
Viewed 7.6e+01k times
508

Peter Mortensen
- 30,738
- 21
- 105
- 131

astrofrog
- 32,883
- 32
- 90
- 131
5 Answers
1219
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')

Peter Mortensen
- 30,738
- 21
- 105
- 131

astrofrog
- 32,883
- 32
- 90
- 131
-
14Also works for IPython notebook warnings. Nice fix :) – Keith Hughitt Nov 30 '13 at 01:23
-
7@FrozenFlame, you change it back to 'default' See: https://docs.python.org/2/library/warnings.html – AZhao Jul 13 '15 at 17:23
-
48You can also execute this in the a notebook, in order to suppress only (certain) warnings in one specific notebook – Vasco Nov 11 '15 at 14:13
-
2Something 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. – Catalina Chircu Mar 05 '20 at 14:51
-
works like butter! – Anggi Permana Harianja Oct 10 '21 at 05:05
-
1Just make sure to invoke at the beginning of the code! – SKPS Jan 17 '22 at 13:41
-
Same in Google Colab as well. – Elvin Aghammadzada Mar 20 '22 at 04:01
-
I also have the same problem. Even after including the warnings.filterwarnings('ignore') at the very beginning of the jupyter notebook in its own cell, warnings still get printed in the cell console – Marco May 23 '23 at 13:56
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>.''')

matthiash
- 3,105
- 3
- 23
- 34
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);

Peter Mortensen
- 30,738
- 21
- 105
- 131

robert
- 978
- 7
- 17
-
2
-
1Doesn't work for me either. I'm getting the same error as Ben (I'm using JupyterLab). – Tobias Bergkvist May 28 '20 at 03:36
-
It worked for me both in Jupyter and in JupyterLab. there may be some problem with your installation. – Reza Keshavarz Nov 13 '21 at 06:07
-
Works for me, but this also removes any other output generated in the cell. – Akhil prasannan Feb 02 '22 at 14:28
-
Just look at the officially selected answer using `warnings`. This is unlikely to work. – Aleksandar Savkov Apr 09 '23 at 06: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>.''')

Peter Mortensen
- 30,738
- 21
- 105
- 131

ottowg
- 51
- 1
- 1
0
you need to specify the category otherwise even with the top solution above you'd get warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

najmieh sadat safarabadi
- 127
- 1
- 2
- 13