ipython에서 모든 경고 숨기기


300

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


3
답변을 수락해야 할 때를 적어두고 다른 질문을 확인한 후 답변이 가능한지 확인하십시오.
Dan D.

답변:


716

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

import warnings
warnings.filterwarnings('ignore')

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

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

warnings.filterwarnings(action='once')

8
IPython 노트북 경고에도 작동합니다. 좋은 수정 :)
Keith Hughitt 1

6
@FrozenFlame, 다시 'default'로 변경하십시오. 참조 : docs.python.org/2/library/warnings.html
AZhao

36
하나의 특정 노트북에서 경고 만 억제하기 위해 노트북에서도이를 실행할 수 있습니다
Vasco

이상한 일이 생겨서 Kaggle 노트북에서 작업하고 warnings.filterwarnings('ignore')스크립트 시작 부분에 설정해도 어쨌든 경고가 표시됩니다. TPU 가속기를 사용한다는 사실과 관련이 있다면이 경우 TPU에 특별한 동작이 있습니까 ... 궁금합니다. 난 이해가 안 돼요.
Catalina Chircu

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
downvote에도 불구하고, 허용 된 답변과 비교하여 전환하기가 쉽기 때문에 여전히 유용한 팁이라고 생각합니다.
matthiash

나는이 솔루션을 좋아한다. 외부 모듈에 저장하고 가져 오기에 추가했습니다.
Adam

3
이것은 더 이상 jupyter lab에서 작동하지 않습니다. (그렇다면 멋지지만)
Ajasja

1
그것은 효과가 있었다! 받아 들인 대답은 도움이되지 않았습니다. 감사합니다 @ matthiash
Gonzalo Garcia

4

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

"Javescript Error : $ is not defined"오류가 나타납니다
Ben

@Ben 브라우저에서 jupyter를 사용하고 있습니까? VSCode의 노트북은 $ (jQuery를)로드하지 않는다
로버트

예, 저는 (구글 크롬)

매력처럼 작동합니다! 감사합니다!
Douglas Daly

나에게도 효과가 없다. 벤과 같은 오류가 발생합니다 (JupyterLab을 사용하고 있습니다).
Tobias Bergkvist

2

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.