Odpowiedzi:
Z dokumentacji warnings
modułu :
#!/usr/bin/env python -W ignore::DeprecationWarning
Jeśli używasz systemu Windows: przekaż -W ignore::DeprecationWarning
jako argument do Pythona. Lepiej jednak rozwiązać problem, przesyłając rzutowanie do int .
(Zauważ, że w Pythonie 3.2 ostrzeżenia o wycofaniu są domyślnie ignorowane).
export PYTHONWARNINGS="ignore::DeprecationWarning:simplejson"
aby wyłączyć ostrzeżenia o pozbawieniu django json z sorl
Należy po prostu naprawić kod, ale na wszelki wypadek
import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)
warnings.filterwarnings("ignore", category=DeprecationWarning)
. Myślę, że musisz to uruchomić po zaimportowaniu biblioteki, która wypluwa ostrzeżenia, chociaż mogę się mylić.
from xgboost import XGBClassifier
. Musiałem wstawić warnings.filterwarnings("ignore", category=DeprecationWarning)
bezpośrednio przed tym importem, aby zadziałał.
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 to za pomocą:
import warnings
with warnings.catch_warnings():
warnings.filterwarnings("ignore",category=DeprecationWarning)
import md5, sha
yourcode()
Teraz nadal otrzymujesz wszystkie inne DeprecationWarning
, ale nie te spowodowane przez:
import md5, sha
Znalazłem najczystszy sposób, aby to zrobić (szczególnie w systemie Windows), dodając następujący fragment do C: \ Python26 \ Lib \ site-packages \ sitecustomize.py:
import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)
Zwróć uwagę, że musiałem utworzyć ten plik. Oczywiście zmień ścieżkę do Pythona, jeśli twoja jest inna.
Żadna z tych odpowiedzi nie zadziałała dla mnie, więc opublikuję sposób, aby rozwiązać ten problem. Używam następującego at the beginning of my main.py
skryptu i działa dobrze.
Użyj tego, co jest (skopiuj i wklej):
def warn(*args, **kwargs):
pass
import warnings
warnings.warn = warn
Przykład:
import "blabla"
import "blabla"
def warn(*args, **kwargs):
pass
import warnings
warnings.warn = warn
# more code here...
# more code here...
ENV PYTHONWARNINGS="ignore::DeprecationWarning"
Zamień argument na int. To jest tak proste, jak
int(argument)
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
...
Po prostu dodaj dekorator @ignore_warnings do funkcji, dla której chcesz zignorować wszystkie ostrzeżenia
Wypróbuj poniższy kod, jeśli używasz Python3:
import sys
if not sys.warnoptions:
import warnings
warnings.simplefilter("ignore")
lub spróbuj tego ...
import warnings
def fxn():
warnings.warn("deprecated", DeprecationWarning)
with warnings.catch_warnings():
warnings.simplefilter("ignore")
fxn()
lub spróbuj tego ...
import warnings
warnings.filterwarnings("ignore")
Python 3
Po prostu napisz poniższe wiersze, które są łatwe do zapamiętania przed napisaniem kodu:
import warnings
warnings.filterwarnings("ignore")
W przypadku Pythona 3 po prostu napisz poniższe kody, aby zignorować wszystkie ostrzeżenia.
from warnings import filterwarnings
filterwarnings("ignore")
Nie żeby cię tym pobić, ale ostrzega cię, że to, co robisz, prawdopodobnie przestanie działać przy następnej aktualizacji Pythona. Konwertuj na int i skończ z tym.
BTW. Możesz także napisać własny moduł obsługi ostrzeżeń. Po prostu przypisz funkcję, która nic nie robi. Jak przekierować ostrzeżenia Pythona do niestandardowego strumienia?
/usr/bin/env: python -W ignore::DeprecationWarning: No such file or directory
błąd. Działa, jeśli uruchomię Pythona z-W ignore::DeprecationWarning
opcją w wierszu poleceń, ale / usr / bin / env nie radzi sobie z tym.