Wie bekomme ich Warnungen.warnen, um eine Warnung auszugeben, und nicht ignorieren, die Zeile?
Ich versuche, um eine DeprecationWarning
mit einem code-snippet basiert auf dem Beispiel in der Dokumentation. http://docs.python.org/2/library/warnings.html#warnings.warn
Offizielle
def deprecation(message):
warnings.warn(message, DeprecationWarning, stacklevel=2)
Mir
import warnings
warnings.warn("This is a warnings.", DeprecationWarning, stacklevel=2) is None # returns True
Ich habe versucht, das entfernen der stacklevel argument, wenn er auf negative, 0 -, 2-und 20000. Die Warnung ist immer lautlos geschluckt. Es spielt keine Frage, eine Warnung oder eine Ausnahme auslösen. Es ignoriert die Linie und zurück None
. Die Dokumentation erwähnt nicht die Kriterien für das ignorieren. Geben Sie eine Nachricht, macht Warnungen.warnen korrekt ausstellen Userwarning.
Woran kann das liegen und wie bekomme ich davor warnen wirklich warnen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus der docs:
Standardmäßig
DeprecationWarning
ignoriert. Sie können ändern Sie den Filter mit der folgenden:Nun Ihre Warnungen gedruckt werden soll:
-W all
oder-W once
sowieso.Warnungen Modul implementiert filtern von Warnungen, basierend auf bestimmten Bedingungen. Sie können zeigen, wie die Standardfilter, die durch den Druck
warnings.filters
:Wie Sie sehen können,
DeprecationWarning
ist standardmäßig ignoriert. Sie können die Funktionen verwenden, die in derWarnungen
Modul und die-W -
-Befehlszeile-option zu Python so konfigurieren Sie die Filter -- siehe die Dokumentation für details.Beispiel:
warnings.simplefilter("always")
(oderwarnings.simplefilter("default")
, wenn Sie nur wollen, um zu sehen, das erste auftreten jeder Warnung). Lesen Sie einfach diewarnings
Modul-Dokumentation für details.