İpython'daki tüm uyarıları gizle


300

Bir ipython oturumunun ekran görüntüsünü oluşturmam ve görüntüleyenlerin kafa karıştırmasını önlemek için warnings.warnfarklı paketlerden gelen çağrıların yaydığı tüm uyarıları devre dışı bırakmak istiyorum . İpythonrc dosyasını bu tür tüm uyarıları otomatik olarak devre dışı bırakacak şekilde yapılandırmanın bir yolu var mı?


3
Cevabınızı ne zaman kabul edebileceğinizi not edin ve ardından diğer sorularınızı kontrol edin ve kabul edilebilir cevapları olup olmadığını görün.
Dan D.

Yanıtlar:


716

Sonunda anladım. Yer:

import warnings
warnings.filterwarnings('ignore')

içeride ~/.ipython/profile_default/startup/disable-warnings.py. Başkasının aynı sorunla karşılaşması durumunda bu soruyu bırakıyorum ve kayda cevap veriyorum.

Çoğu zaman bir kez bir uyarı görmek yararlıdır. Bu, aşağıdakiler tarafından ayarlanabilir:

warnings.filterwarnings(action='once')

8
IPython dizüstü bilgisayar uyarıları için de çalışır. Güzel düzeltme :)
Keith Hughitt

6
@FrozenFlame, tekrar 'varsayılan' olarak değiştirir Bakınız: docs.python.org/2/library/warnings.html
AZhao

36
Belirli bir not defterinde yalnızca (belirli) uyarıları bastırmak için bunu bir not defterinde de uygulayabilirsiniz
Vasco

Bana garip bir şey oluyor, Kaggle defter üzerinde çalışıyorum ve senaryonun başına geçsem bile warnings.filterwarnings('ignore')uyarıları alıyorum. TPU hızlandırıcı kullanmamla ilgili olursa, TPU'nun bu durumda belirli bir davranışı var mı? Acaba. Ben anlamıyorum.
Catalina Chircu

57

Bir hücrede aşağıdaki kodu çalıştırarak pembe kutulardaki uyarıları gizliyorum:

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

2
Downvote rağmen, kabul edilen cevaba kıyasla geçiş yapmak daha kolay olduğu için hala yararlı bir ipucu olduğuna inanıyorum.
matthiash

Bu çözümü seviyorum. Harici bir modüle kaydedip içe aktarmalara ekledim.
Adam

3
Bu artık jupyter laboratuvarı ile çalışmaz (eğer güzel olsaydı :)
Ajasja

1
İşe yaradı ! kabul edilen cevap bana yardımcı olmadı. Thankmat @matthiash
Gonzalo Garcia

4

Kabul edilen cevap Jupyter'de çalışmıyor (en azından bazı kütüphaneler kullanılırken).

Buradaki Javascript çözümleri yalnızca zaten gösterilen uyarıları gizler, ancak gelecekte gösterilecek uyarıları gizlemez.

Jupyter ve JupyterLab'daki uyarıları gizlemek / göstermek için Uyarıları gizlemek / göstermek için css'yi değiştiren aşağıdaki komut dosyasını yazdım.

%%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 Hatası: $ tanımlı değil" hatasını alıyorum
Ben

@Ben tarayıcıda jupyter kullanıyor musunuz? VSCode'daki not defterleri $ (jQuery) yüklemiyor
robert

Evet, yapıyorum (Google Chrome)
Ben

Tıkır tıkır çalışıyor! Teşekkür ederim!
Douglas Daly

Benim için de çalışmıyor. Ben ile aynı hatayı alıyorum (JupyterLab kullanıyorum).
Tobias Bergkvist

2

Jupyter laboratuvarı için bu çalışmalıdır (@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>.''')

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.