Ich muss einen Screencast einer IPython-Sitzung erstellen, und um die Betrachter nicht zu verwirren, möchte ich alle Warnungen deaktivieren, die von warnings.warn
Anrufe aus verschiedenen Paketen. Gibt es eine Möglichkeit zur Konfiguration der ipythonrc Datei, um alle diese Warnungen automatisch zu deaktivieren?
Antworten
Zu viele Anzeigen?Ich blende die Warnungen in den rosa Kästchen aus, indem ich den folgenden Code in einer Zelle ausführe:
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>.''')
Die akzeptierte Antwort funktioniert in Jupyter nicht (zumindest bei Verwendung einiger Bibliotheken).
Die JavaScript-Lösungen hier verbergen nur Warnungen, die bereits angezeigt werden, nicht aber solche, die in Zukunft angezeigt werden.
So blenden Sie Warnungen in Jupyter aus und ein JupyterLab Ich habe das folgende Skript geschrieben, das im Wesentlichen CSS umschaltet, um Warnungen ein- und auszublenden.
%%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);
Für JupyterLab sollte dies funktionieren (@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>.''')