Pythonで非推奨の警告を無視する方法


176

私はこれを続けます:

DeprecationWarning: integer argument expected, got float

このメッセージを消すにはどうすればよいですか?Pythonで警告を回避する方法はありますか?

回答:


121

warningsモジュールのドキュメントから:

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

Windowsを使用している場合:-W ignore::DeprecationWarning引数としてPythonに渡します。しかし、問題を解決するには、intにキャストする方が良いでしょう

(Python 3.2では、デフォルトで非推奨の警告が無視されることに注意してください。)


8
この作業ができればいいのに... /usr/bin/env: python -W ignore::DeprecationWarning: No such file or directoryエラーが発生します。-W ignore::DeprecationWarningコマンドラインでオプションを指定してpythonを実行すると機能しますが、/ usr / bin / envはそれを処理しません。
ウェロニカ、2011年

4
Windowsのみのソリューションのようです。
Daniel Miles

15
環境変数PYTHONWARNINGSを設定して、export PYTHONWARNINGS="ignore::DeprecationWarning:simplejson"sorlからのdjango json deprication警告を無効にすることができました
yvess 14

@yvess、これが答えであれば、私はそれに投票したでしょう。システム全体で特定の警告を無視するクリーンな方法のようです。〜/ .profileに入れます。よく働く。
アランベリー2014年

こんにちは、この非推奨警告メッセージをタイプ情報のメッセージに変える方法をいくつか教えてください。私が欲しいのは、メッセージをコンソールに表示して、どのような種類の警告にも分類されないようにすることです。
クリシュナオザ2016

194

コードを修正する必要がありますが、念のため、

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

2
iPythonを使用して私のために働いた
zbinsd

21
これは私にはまったく効果がなく、非推奨の警告が表示されます。
user1244215 2013年

8
@ user1244215私は間違っている可能性がありますが、コードのどこで実行するかが重要だと思いますwarnings.filterwarnings("ignore", category=DeprecationWarning)。間違いかもしれませんが、警告を吐き出しているライブラリをインポートした後で、これを実行する必要があると思います。
ジャックケリー

1
@CodingYourLifeカテゴリーが必要なので、RuntimeWarningなどの他のタイプの警告が引き続き表示されます
ismail

1
私の場合、警告の原因となったコードはでしたfrom xgboost import XGBClassifier。それが機能するためwarnings.filterwarnings("ignore", category=DeprecationWarning)には、そのインポートの直前に置く必要がありました。
sedeh 2017

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も生成していたため、これでインポート以外のコードのコードもラップできることを理解するために少し時間をかけてください。)無視したい。
ウェロニカ、2011年

29

これを行う最もクリーンな方法(特にWindowsの場合)は、C:\ Python26 \ Lib \ site-packages \ sitecustomize.pyに以下を追加することです。

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

このファイルを作成する必要があったことに注意してください。もちろん、パスが異なる場合は、パスをpythonに変更します。


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 2018年

これも私を救った。お役に立ててよかったです。
seralouk、2018年

AstroPyの非推奨の警告に対して3.7.3では機能しません。:(
ingyhere

おかげで私のために働きました:)
valkyrie55

素晴らしいニュース !歓声
セラルーク

6

正しい引数を渡しますか?:P

より深刻な注意点として、コマンドラインで引数-Wi :: DeprecationWarningをインタープリターに渡して、非推奨の警告を無視できます。


5

Dockerソリューション

  • Pythonアプリケーションを実行する前にすべての警告を無効にする
    • ドッキングされたテストを無効にすることもできます
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")


0

何をしているのかわかっている場合は、警告するファイルを見つけて(ファイルのパスは警告情報に表示されます)、警告を生成する行をコメント化します。


0

Python 3の場合、すべての警告を無視するコードを以下に記述してください。

from warnings import filterwarnings
filterwarnings("ignore")

-2

それについてあなたを打ち負かすためではありませんが、あなたがしていることは次のPythonをアップグレードするときにおそらく機能しなくなるだろうと警告されています。intに変換し、それで完了します。

ところで。独自の警告ハンドラを作成することもできます。何もしない関数を割り当てるだけです。 Pythonの警告をカスタムストリームにリダイレクトする方法


4
そのアドバイスは、それが実際に彼自身のコードであり、いくつかのサードパーティパッケージからではない場合にのみ機能します。
クリストファー・バーバー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.