Python'da kullanımdan kaldırma uyarılarını yoksayma


176

Bunu almaya devam ediyorum:

DeprecationWarning: integer argument expected, got float

Bu mesajı nasıl ortadan kaldırabilirim? Python'da uyarıları önlemenin bir yolu var mı?

Yanıtlar:


121

warningsModülün belgelerinden :

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

Windows kullanıyorsanız: -W ignore::DeprecationWarningPython'a argüman olarak geçin. Sorunu çözmek için daha iyi, int .

(Python 3.2'de kullanımdan kaldırma uyarılarının varsayılan olarak yok sayıldığını unutmayın.)


8
Keşke bu işi yapabilseydim ... bir /usr/bin/env: python -W ignore::DeprecationWarning: No such file or directoryhata alıyorum. -W ignore::DeprecationWarningKomut satırındaki seçenekle python çalıştırırsam çalışır , ancak / usr / bin / env onunla ilgilenmez.
weronika

4
Sadece Windows için bir çözüm gibi görünüyor.
Daniel Miles

15
Bu benim için çalıştı env değişkeni PYTHONWARNINGS ayarlayabilirsiniz export PYTHONWARNINGS="ignore::DeprecationWarning:simplejson"sorl devre dışı bırakmak django json amortismanlar uyarılarına
yvess

@yvess, eğer bu bir cevap olsaydı, oy verirdim. Sistem genelinde belirli uyarıları görmezden gelmenin temiz bir yolu gibi görünüyor. ~ / .Profilime koydum. Harika çalışıyor.
allanberry

Merhaba, bu Kullanımdan Çıkarma Uyarı mesajını tür bilgisi mesajına nasıl dönüştürebiliriz. İstediğim mesaj sadece konsolda herhangi bir uyarı türü olarak kategorize edilmemelidir.
Krishna Oza

194

Kodunuzu düzeltmeniz gerekir, ancak her ihtimale karşı,

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


21
Bu benim için işe yaramıyor, hala kullanımdan çıkarma uyarıları görüyor.
user1244215 22:13

8
@ user1244215 Yanlış olabilirim ama kodunuzda nerede çalıştığınızı düşünüyorum warnings.filterwarnings("ignore", category=DeprecationWarning). Sanırım uyarıları tüküren kütüphaneyi içe aktardıktan sonra çalıştırmam gerekiyor, ancak yanılmış olabilirim.
Jack Kelly

1
@CodingYourLife kategorisine ihtiyacınız var, bu yüzden RuntimeWarning vb. Gibi diğer uyarı türlerini görmeye devam edersiniz
ismail

1
Benim durumumda, uyarıya neden olan kod oldu from xgboost import XGBClassifier. warnings.filterwarnings("ignore", category=DeprecationWarning)Çalışması için bu ithalattan hemen önce koymak zorunda kaldım .
sedeh

193

Bunlar vardı:

/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

Şununla düzeltildi:

import warnings

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

yourcode()

Şimdi hala diğer tüm öğeleri elde edersiniz DeprecationWarning, ancak aşağıdakilerden kaynaklananları almazsınız :

import md5, sha

2
Harika, çok teşekkür ederim !! (Bazı paketler de içe aktarma işleminden sonra kullanıldığında DeprecationWarnings ürettiğinden, buradaki içe aktarılmayan kod parçalarını da satabileceğimi fark ettim.) Yalnızca zaten baktığım ve karar verdiğim belirli DeprecationWarnings'i susturmanın çok güzel bir yolu. Görmezden gelmek istiyorum.
weronika

29

Bunu yapmanın en temiz yolunu buldum (özellikle pencerelerde) C: \ Python26 \ Lib \ site-Packages \ sitecustomize.py:

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

Bu dosyayı oluşturmak zorunda olduğumu unutmayın. Elbette, sizinkinden farklıysa python yolunu değiştirin.


26

Bu cevapların hiçbiri benim için işe yaramadı, bu yüzden bunu çözme yolumu göndereceğim. Aşağıdaki at the beginning of my main.pykomut dosyası kullanın ve iyi çalışıyor.


Aşağıdakileri olduğu gibi kullanın (kopyalayıp yapıştırın):

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

Misal:

import "blabla"
import "blabla"

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

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


4
Diğer tüm çözümler işe yaramadığında bu işe yaradı. Teşekkürler!
cxxl

Bu da beni kurtardı. Yardımcı olabileceğime sevindim.
seralouk

AstroPy kullanımdan kaldırılma uyarıları için 3.7.3'te çalışmaz. :(
ingyhere

Benim için çalıştı, teşekkürler :)
valkyrie55

harika haber ! cheers
seralouk

6

Doğru argümanlar iletilsin mi? : P

Daha ciddi bir notta, kullanımdan kaldırma uyarılarını yoksaymak için komut satırında -Wi :: DeprecationWarning argümanını yorumlayıcıya iletebilirsiniz.


5

Docker Çözümü

  • Python uygulamasını çalıştırmadan önce TÜM uyarıları devre dışı bırakın
    • Kenetlenmiş testlerinizi de devre dışı bırakabilirsiniz
ENV PYTHONWARNINGS="ignore::DeprecationWarning"


4

Uyarıları yalnızca işlevlerde yoksaymak istediğinizde aşağıdakileri yapabilirsiniz.

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

Tüm uyarıları yoksaymak istediğiniz işleve @ignore_warnings dekoratörünü eklemeniz yeterlidir


3

Python3 kullanıyorsanız aşağıdaki kodu deneyin:

import sys

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

ya da bunu dene ...

import warnings

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

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

ya da bunu dene ...

import warnings
warnings.filterwarnings("ignore")

2

Python 3

Kodunuzu yazmadan önce hatırlanması kolay satırlar yazmanız yeterlidir:

import warnings

warnings.filterwarnings("ignore")

0

Ne yaptığınızı biliyorsanız, başka bir yol sizi uyaran dosyayı bulmaktır (dosyanın yolu uyarı bilgisinde gösterilir), uyarıları oluşturan satırları yorumlayın.


0

Python 3 için, tüm uyarıları yoksaymak için aşağıdaki kodları yazmanız yeterlidir.

from warnings import filterwarnings
filterwarnings("ignore")

-2

Bu konuda sizi yenmek için değil, ancak bir sonraki yükseltme python yaptığınızda muhtemelen yaptığınız işin duracağı konusunda uyarılıyoruz. İnt dönüştürün ve onunla yapılabilir.

BTW. Ayrıca kendi uyarı işleyicinizi de yazabilirsiniz. Sadece hiçbir şey yapmayan bir işlev atayın. Python uyarılarını özel bir akışa nasıl yeniden yönlendirebilirim?


4
Bu tavsiye, yalnızca kendi kodu ise, bazı üçüncü taraf paketlerinden değil, işe yarar.
Christopher Barber
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.