IPython में सभी चेतावनियों को छिपाएँ


300

मुझे एक ipython सत्र का एक स्क्रीनकास्ट बनाने की आवश्यकता है, और भ्रामक दर्शकों से बचने के लिए, मैं warnings.warnविभिन्न पैकेजों से कॉल द्वारा उत्सर्जित सभी चेतावनियों को अक्षम करना चाहता हूं । क्या ऐसी सभी चेतावनियों को स्वचालित रूप से अक्षम करने के लिए ipythonrc फ़ाइल को कॉन्फ़िगर करने का एक तरीका है?


3
ध्यान दें कि आप कब अपना उत्तर स्वीकार कर सकते हैं, और फिर अपने अन्य प्रश्नों की जाँच करें और देखें कि क्या उनके पास कोई स्वीकार्य उत्तर है।
डैन डी।

जवाबों:


716

मैंने आखिरकार इसका पता लगा लिया। जगह:

import warnings
warnings.filterwarnings('ignore')

अंदर ~/.ipython/profile_default/startup/disable-warnings.py। मैं इस प्रश्न और उत्तर को रिकॉर्ड के लिए छोड़ रहा हूं, यदि किसी और को इस मुद्दे पर कोई समस्या आती है।

काफी बार यह एक बार चेतावनी देखने के लिए उपयोगी है। इसके द्वारा सेट किया जा सकता है:

warnings.filterwarnings(action='once')

8
IPython नोटबुक चेतावनियों के लिए भी काम करता है। अच्छा तय :)
कीथ ह्यूजिट

6
@ फ़िरोज़ेनफ्लेम, आप इसे वापस 'डिफॉल्ट' में बदलते हैं
AZhao

36
आप इसे नोटबुक में भी निष्पादित कर सकते हैं, केवल एक विशिष्ट नोटबुक में केवल (निश्चित) चेतावनियों को दबाने के लिए
वास्को

मेरे साथ कुछ अजीब होता है, मैं कागले नोटबुक पर काम करता हूं, और यहां तक ​​कि अगर मैं warnings.filterwarnings('ignore')अपनी स्क्रिप्ट की शुरुआत में सेट करता हूं, तो मुझे वैसे भी चेतावनी मिलती है। क्या यह इस तथ्य से संबंधित होना चाहिए कि मैं टीपीयू त्वरक का उपयोग करता हूं, क्या टीपीयू इस मामले में एक विशेष व्यवहार है ... मुझे आश्चर्य है। मुझे समझ नहीं आता।
कैटालिना चिरकु

57

मैं एक सेल में निम्नलिखित कोड चलाकर गुलाबी बक्से में चेतावनी छिपाता हूं:

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
स्वीकार किए जाने के बावजूद, अभी भी विश्वास है कि यह एक उपयोगी टिप था, क्योंकि स्वीकृत उत्तर की तुलना में इसे टॉगल करना आसान है।
मथिशश

मुझे यह समाधान पसंद है। मैंने एक बाहरी मॉड्यूल में सहेजा और आयात में जोड़ा।
एडम

3
यह अब ज्यूपिटर लैब के साथ काम नहीं करता है (हालांकि यह शांत होगा अगर यह :):
अजजा

1
इसने काम कर दिया ! स्वीकृत उत्तर ने मेरी मदद नहीं की। साभार @matthiash
गोंजालो गार्सिया

4

स्वीकृत उत्तर जुपिटर में काम नहीं करता है (कम से कम कुछ पुस्तकालयों का उपयोग करते समय)।

यहाँ जावास्क्रिप्ट समाधान केवल पहले से दिखने वाली चेतावनियाँ छिपाते हैं लेकिन भविष्य में दिखाई जाने वाली चेतावनियाँ नहीं।

जुपिटर और जुपाइटरलैब में चेतावनी को अनहाइड करने के लिए मैंने निम्नलिखित स्क्रिप्ट लिखी है जो अनिवार्य रूप से छिपाने के लिए सीएसएस टॉगल करता है / अनहाइड चेतावनी।

%%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);

मुझे त्रुटि "जेवसस्क्रिप्ट त्रुटि: $ परिभाषित नहीं है"
बेन

@ क्या आप ब्राउज़र में ज्यूपिटर का उपयोग कर रहे हैं? VSCode में नोटबुक $ लोड नहीं होता है (jQuery)
रॉबर्ट

हां, मैं करता हूं (Google Chrome)
बेन

एक जादू की तरह काम करता है! धन्यवाद!
डगलस डेली

मेरे लिए भी काम नहीं करता है। मुझे बेन के समान त्रुटि मिल रही है (मैं ज्यूपिटरलैब का उपयोग कर रहा हूं)।
टोबियास बर्गकविस्ट

2

जुपिटर लैब के लिए यह काम करना चाहिए (@ आलाजा)

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.