2009-05-18 15 views

Odpowiedz

84

Z dokumentacji warnings module:

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

Jeśli jesteś na systemie Windows: pass -W ignore::DeprecationWarning jako argument do Pythona. Lepiej jednak rozwiązać ten problem, przesyłając go pod numer int.

(Zauważ, że w Pythonie 3.2, ostrzeżenia amortyzacyjne są domyślnie ignorowany).

+0

odlewania pracuje zbyt .. ale flaga był pomocny! – Mohammed

+6

Chciałbym móc to wykonać ... Otrzymuję '/ usr/bin/env: python -W ignore :: DeprecationWarning: Brak takiego błędu w pliku lub katalogu. Działa, jeśli uruchomię pythona z opcją '-W ignore :: DeprecationWarning' w wierszu poleceń, ale/usr/bin/env nie zajmuje się tym. – weronika

+2

Wydaje się być rozwiązaniem tylko dla systemu Windows. –

6

Podaj prawidłowe argumenty? : P

Co ważniejsze, możesz przekazać argumentowi -Wi :: DeprecationWarning z wiersza poleceń do interpretera, aby zignorować ostrzeżenia o wycofaniu.

5

Konwertuj argument na int. To tak proste, jak

int(argument) 
2

Nie bić cię o tym, ale jesteś ostrzeżony, że to co robisz prawdopodobnie przestanie działać przy następnej aktualizacji Pythona. Konwertuj na int i skończ z tym.

BTW. Możesz również napisać swój własny program obsługi ostrzeżeń. Wystarczy przypisać funkcję, która nic nie robi. How to redirect python warnings to a custom stream?

+0

Ta rada działa tylko wtedy, gdy jest to rzeczywiście jego własny kod, a nie z jakiejś innej paczki. –

119

Trzeba tylko rozwiązać swój kod, ale na wszelki wypadek,

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

Praca dla mnie za pomocą iPython – zbinsd

+9

To nie działa dla mnie w ogóle, wciąż widzę objaśnienie. – user1244215

+1

@ user1244215 Mogę się mylić, ale myślę, że ma znaczenie, gdzie w twoim kodzie uruchamiasz 'warnings.filterwarnings (" ignore ", category = DeprecationWarning)'. Myślę, że musisz to uruchomić po zaimportowaniu biblioteki, która wypluwa ostrzeżenia, chociaż mógłbym się mylić. –

144

miałem te:

/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 

Naprawiono go:

import warnings 

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

yourcode() 

Teraz jeszcze dostać wszystkie pozostałe DeprecationWarning s, ale nie te spowodowane przez:

import md5, sha 
+1

Niesamowite, dziękuję bardzo !! (Zająłem się chwilą, aby zdać sobie sprawę, że mogę również zawinąć w to nieobsługiwane bity kodu, ponieważ niektóre pakiety generowały również DeprecationWarnings, gdy są używane po imporcie.) Bardzo dobry sposób na wyciszenie określonych ostrzeżeń o wycofaniu, które już obejrzałem i zdecydowałem Chcę zignorować. – weronika

23

znalazłem najczystszy sposób to zrobić (zwłaszcza na windows) jest przez dodanie następujących do katalogu C: \ Python26 \ Lib \ site-packages \ sitecustomize.py:

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

Należy pamiętać, że Musiałem stworzyć ten plik. Oczywiście, zmień ścieżkę do pythona, jeśli twoja jest inna.

0

Jeśli chcesz zignorować ostrzeżenia tylko w funkcjach, możesz wykonać następujące czynności.

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

Wystarczy dodać dekorator @ignore_warnings na funkcję, którą chcesz ignorować wszystkie ostrzeżenia

Powiązane problemy