[python] ipython에서 모든 경고 숨기기

ipython 세션의 스크린 캐스트를 생성해야하고 뷰어를 혼란스럽게하지 않기 위해 warnings.warn다른 패키지의 호출에서 발생하는 모든 경고를 비활성화하고 싶습니다 . 그러한 모든 경고를 자동으로 비활성화하도록 ipythonrc 파일을 구성하는 방법이 있습니까?



답변

나는 결국 그것을 알아 냈습니다. 장소:

import warnings
warnings.filterwarnings('ignore')

내부 ~/.ipython/profile_default/startup/disable-warnings.py. 다른 사람이 같은 문제를 겪을 경우를 대비 하여이 질문에 답하고 기록을 남기겠습니다.

종종 경고를 한 번 보는 것이 유용합니다. 이것은 다음에 의해 설정 될 수 있습니다 :

warnings.filterwarnings(action='once')


답변

셀에서 다음 코드를 실행하여 분홍색 상자에 경고를 숨 깁니다.

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


답변

Jupyter에서는 허용되는 답변이 작동하지 않습니다 (적어도 일부 라이브러리를 사용하는 경우).

여기서 Javascript 솔루션은 이미 표시되고 있지만 앞으로 표시 될 경고는 표시하지 않는 경고 만 숨 깁니다.

Jupyter 및 JupyterLab에서 경고를 숨기거나 숨기기를 해제하기 위해 본질적으로 경고를 숨기거나 숨기기 해제하기 위해 CSS를 전환하는 다음 스크립트를 작성했습니다.

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


답변

Jupyter Lab의 경우 작동해야합니다 (@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>.''')


답변

이것은 매번 작동합니다-

import warnings
warnings.filterwarnings('ignore')


답변