Pracuję z kodem, który rzuca wiele (dla mnie w tej chwili) bezużytecznych ostrzeżeń za pomocą warnings
biblioteki. Czytanie (/ skanowanie) dokumentacji Znalazłem sposób na wyłączenie ostrzeżeń dla pojedynczych funkcji . Ale nie chcę zmieniać tak dużo kodu.
Czy może jest jak flaga python -no-warning foo.py
?
Co byś polecił?
python
suppress-warnings
Framester
źródło
źródło
FutureWarning: This search is broken in 1.3 and earlier, and will be fixed in a future version. If you rely on the current behaviour, change it to [this other thing]
. Wolałbym teraz zignorować ostrzeżenia i poczekać na ich cichą naprawę niż napisać niepotrzebnie brzydki kod, aby uniknąć nieszkodliwego ostrzeżenia.Odpowiedzi:
Istnieje opcja -W .
python -W ignore foo.py
źródło
Czy spojrzałeś na sekcję ostrzeżeń o pomijaniu w dokumentach Pythona?
Nie akceptuję tego, ale możesz po prostu ukryć wszystkie ostrzeżenia w ten sposób:
Dawny:
źródło
category
argumentu:warnings.filterwarnings("ignore", category=DeprecationWarning)
warnings.filterwarnings
funkcji:module
. Pozwala zignorować ostrzeżenia z określonego modułu.Możesz także zdefiniować zmienną środowiskową (nowa funkcja w 2010 r. - tj. Python 2.7)
Testuj tak: Domyślnie
Zignoruj ostrzeżenia
Do zaniechania ostrzeżenia spojrzeć instrukcją ignorowania-deprecation-warnings-in-python
Skopiowano tutaj ...
Z dokumentacji
warnings
modułu :Jeśli korzystasz z systemu Windows: przekaż
-W ignore::DeprecationWarning
jako argument do Pythona. Lepiej jednak rozwiązać problem, przesyłając na int .(Uwaga: w Pythonie 3.2 ostrzeżenia o wycofaniu są domyślnie ignorowane).
Lub:
Teraz nadal masz wszystkie inne
DeprecationWarning
, ale nie te spowodowane przez:źródło
tox
, dodawaniePYTHONWARNINGS=ignore
dosetenv
sprawia, że wyjście jest mniej brudne.To stare pytanie, ale w PEP 565 jest kilka nowszych wskazówek, że aby wyłączyć wszystkie ostrzeżenia, jeśli piszesz aplikację python, powinieneś użyć:
Jest to zalecane dlatego, że domyślnie wyłącza wszystkie ostrzeżenia, ale pozwala na ich ponowne włączenie za pośrednictwem
python -W
wiersza poleceń lubPYTHONWARNINGS
.źródło
Jeśli nie chcesz czegoś skomplikowanego, to:
źródło
warnings.filterwarnings("default", category=FutureWarning)
Jeśli wiesz, jakie są zwykle bezużyteczne ostrzeżenia, możesz je filtrować według wiadomości.
źródło
Zdaję sobie sprawę, że ma to zastosowanie tylko do niszy sytuacji, ale w
numpy
kontekście bardzo lubię używaćnp.errstate
:Jednak używając
np.errstate
:Najlepsze jest to, że możesz zastosować to tylko do bardzo określonych wierszy kodu.
źródło
ostrzeżenia są wysyłane przez stderr, a prostym rozwiązaniem jest dołączenie „2> / dev / null” do CLI. ma to sens dla wielu użytkowników, takich jak centos 6, którzy utknęli w zależnościach Pythona 2.6 (takich jak yum), a różne moduły są wypychane na skraj wyginięcia w swoim zasięgu.
jest to szczególnie prawdziwe w przypadku kryptografii obejmującej SNI i cetera. można zaktualizować 2.6 do obsługi HTTPS za pomocą proc na: https://urllib3.readthedocs.io/en/latest/user-guide.html#ssl-py2
ostrzeżenie jest nadal na miejscu, ale wszystko, co chcesz, jest przeniesione z powrotem. re-direct z stderr pozostawi ci czyste wyjście terminala / powłoki, chociaż sama zawartość standardowego wyjścia się nie zmienia.
odpowiadanie na FriendFX. zdanie pierwsze (1) odpowiada bezpośrednio na problem uniwersalnym rozwiązaniem. zdanie drugie (2) bierze pod uwagę cytowaną kotwicę „wyłącz ostrzeżenia”, która jest specyficzna dla Pythona 2.6, i zauważa, że użytkownicy RHEL / centos 6 nie mogą bezpośrednio obejść się bez 2.6. chociaż nie podano żadnych konkretnych ostrzeżeń, para druga (2) odpowiada na pytanie 2.6, które najczęściej dostaję niedociągnięcia w module kryptograficznym i jak można „zmodernizować” (tj. uaktualnić, backport, naprawić) wydajność HTTPS / TLS Pythona . paragraf trzeci (3) wyjaśnia jedynie rezultat zastosowania przekierowania i aktualizacji modułu / zależności.
źródło