파이썬에서 사용 중단 경고를 무시하는 방법


176

나는 이것을 계속 얻는다 :

DeprecationWarning: integer argument expected, got float

이 메시지를 없애려면 어떻게해야합니까? 파이썬에서 경고를 피하는 방법이 있습니까?

답변:


121

warnings모듈 문서에서 :

 #!/usr/bin/env python -W ignore::DeprecationWarning

Windows를 사용하는 경우 : -W ignore::DeprecationWarningPython에 인수로 전달하십시오 . int 로 캐스팅하여 문제를 해결하는 것이 좋습니다.

(Python 3.2에서는 지원 중단 경고가 기본적으로 무시됩니다.)


8
이 작업을 수행 할 수 있으면 좋겠다 ... /usr/bin/env: python -W ignore::DeprecationWarning: No such file or directory오류가 발생합니다. -W ignore::DeprecationWarning명령 줄 에서 옵션으로 파이썬을 실행하면 작동 하지만 / usr / bin / env는 처리하지 않습니다.
weronika

4
Windows 전용 솔루션 인 것 같습니다.
Daniel Miles

15
env 변수 PYTHONWARNINGS를 설정할 수 있습니다.이 기능 export PYTHONWARNINGS="ignore::DeprecationWarning:simplejson"은 sorl에서 django json deprication 경고를 비활성화합니다.
yvess

@ yvess, 이것이 답이라면 투표했을 것입니다. 시스템 전체에서 특정 경고를 무시할 수있는 확실한 방법입니다. ~ / .profile에 넣었습니다. 잘 작동합니다.
allanberry

안녕하세요,이 Deprecation Warning 메시지를 type type 메시지로 바꾸는 방법이 있습니까? 내가 원하는 것은 콘솔에 메시지를 표시하여 어떤 유형의 경고로도 분류하지 않는 것입니다.
Krishna Oza

194

코드를 수정해야하지만 경우에 따라

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning) 

2
나를 iPython를 사용하여 근무
zbinsd

21
이것은 나에게 전혀 효과가 없으며 여전히 사용 중단 경고가 표시됩니다.
user1244215

8
@ user1244215 틀릴 수도 있지만 코드에서 실행하는 위치가 중요하다고 생각합니다 warnings.filterwarnings("ignore", category=DeprecationWarning). 나는 경고 할 수있는 라이브러리를 가져온 후에 이것을 실행해야한다고 생각하지만, 잘못 생각할 수 있습니다.
Jack Kelly

1
@CodingYourLife 카테고리가 필요하므로 RuntimeWarning 등과 같은 다른 유형의 경고가 계속 표시됩니다.
ismail

1
필자의 경우 경고를 발생시킨 코드는 from xgboost import XGBClassifier입니다. 내가 넣어 가지고 warnings.filterwarnings("ignore", category=DeprecationWarning)작업에 대한이 오기 직전.
sedeh

193

나는 이것을 가지고 있었다 :

/home/eddyp/virtualenv/lib/python2.6/site-packages/Twisted-8.2.0-py2.6-linux-x86_64.egg/twisted/persisted/sob.py:12:
DeprecationWarning: the md5 module is deprecated; use hashlib instead import os, md5, sys

/home/eddyp/virtualenv/lib/python2.6/site-packages/Twisted-8.2.0-py2.6-linux-x86_64.egg/twisted/python/filepath.py:12:
DeprecationWarning: the sha module is deprecated; use the hashlib module instead import sha

다음과 같이 수정했습니다.

import warnings

with warnings.catch_warnings():
    warnings.filterwarnings("ignore",category=DeprecationWarning)
    import md5, sha

yourcode()

이제 당신은 여전히 ​​다른 모든 것을 얻지 DeprecationWarning만 다음으로 인한 것은 얻지 못합니다.

import md5, sha

2
정말 고마워요 !! (일부 패키지는 가져 오기 후에 사용될 때 DeprecationWarnings를 생성하기 때문에 가져 오기가 아닌 코드의 비트를 감쌀 수 있음을 깨닫게 될 순간을 이미 생각해보십시오.) 이미 살펴보고 결정한 특정 DeprecationWarnings를 침묵시키는 아주 좋은 방법 무시하고 싶습니다.
weronika

29

이 작업을 수행하는 가장 깨끗한 방법 (특히 Windows에서)은 C : \ Python26 \ Lib \ site-packages \ sitecustomize.py에 다음을 추가하는 것입니다.

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

이 파일을 만들어야했습니다. 물론, 경로가 다르면 파이썬 경로를 변경하십시오.


26

이 답변들 중 어느 것도 나를 위해 일하지 않았으므로 이것을 해결하는 방법을 게시 할 것입니다. 나는 다음 at the beginning of my main.py스크립트를 사용하고 잘 작동합니다.


다음을 그대로 사용하십시오 (복사-붙여 넣기).

def warn(*args, **kwargs):
    pass
import warnings
warnings.warn = warn

예:

import "blabla"
import "blabla"

def warn(*args, **kwargs):
    pass
import warnings
warnings.warn = warn

# more code here...
# more code here...


4
다른 모든 솔루션이 그렇지 않을 때 작동했습니다. 감사!
cxxl

이것도 저를 구했습니다. 내가 도울 수있어서 기쁘다.
seralouk

AstroPy 지원 중단 경고에 대해서는 3.7.3에서 작동하지 않습니다. :(
ingyhere

나를 위해
일해

좋은 소식 ! 건배
seralouk

6

올바른 논증을 전달 하시겠습니까? :피

더 심각한 메모에서는 명령 줄의 -Wi :: DeprecationWarning 인수를 인터프리터로 전달하여 사용 중단 경고를 무시할 수 있습니다.


5

도커 솔루션

  • 파이썬 응용 프로그램을 실행하기 전에 모든 경고를 비활성화하십시오
    • 도커 테스트를 비활성화 할 수도 있습니다
ENV PYTHONWARNINGS="ignore::DeprecationWarning"


4

기능에서만 경고를 무시하려면 다음을 수행하십시오.

import warnings
from functools import wraps


def ignore_warnings(f):
    @wraps(f)
    def inner(*args, **kwargs):
        with warnings.catch_warnings(record=True) as w:
            warnings.simplefilter("ignore")
            response = f(*args, **kwargs)
        return response
    return inner

@ignore_warnings
def foo(arg1, arg2):
    ...
    write your code here without warnings
    ...

@ignore_warnings
def foo2(arg1, arg2, arg3):
    ...
    write your code here without warnings
    ...

모든 경고를 무시하려는 함수에 @ignore_warnings 데코레이터를 추가하십시오.


3

Python3을 사용하는 경우 아래 코드를 시도하십시오.

import sys

if not sys.warnoptions:
    import warnings
    warnings.simplefilter("ignore")

또는 이것을 시도하십시오 ...

import warnings

def fxn():
    warnings.warn("deprecated", DeprecationWarning)

with warnings.catch_warnings():
    warnings.simplefilter("ignore")
    fxn()

또는 이것을 시도하십시오 ...

import warnings
warnings.filterwarnings("ignore")

2

파이썬 3

코드를 작성하기 전에 기억하기 쉬운 행을 아래에 작성하십시오.

import warnings

warnings.filterwarnings("ignore")

0

당신이하고있는 일을 알고 있다면, 다른 방법은 단순히 경고하는 파일 (파일의 경로가 경고 정보에 표시됨)을 찾아 경고를 생성하는 줄을 주석 처리하는 것입니다.


0

파이썬 3의 경우 모든 경고를 무시하기 위해 아래 코드를 작성하십시오.

from warnings import filterwarnings
filterwarnings("ignore")

-2

그것에 대해 당신을 이길 수는 없지만 다음에 파이썬을 업그레이드 할 때 당신이하고있는 일이 작동을 멈출 것이라는 경고를 받고 있습니다. int로 변환하고 완료하십시오.

BTW. 자신 만의 경고 처리기를 작성할 수도 있습니다. 아무것도하지 않는 함수를 지정하면됩니다. 파이썬 경고를 사용자 정의 스트림으로 리디렉션하는 방법은 무엇입니까?


4
이 조언은 실제로 타사 코드가 아닌 자체 코드 인 경우에만 작동합니다.
Christopher Barber
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.