Ich arbeite mit Code, der (für mich im Moment) viele nutzlose Warnungen über die warnings
Bibliothek auslöst. Beim Lesen (/ Scannen) der Dokumentation habe ich nur eine Möglichkeit gefunden , Warnungen für einzelne Funktionen zu deaktivieren . Aber ich möchte nicht so viel am Code ändern.
Gibt es vielleicht eine Flagge wie python -no-warning foo.py
?
Was würden Sie empfehlen?
python
suppress-warnings
Framester
quelle
quelle
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]
. Ich würde die Warnungen jetzt lieber ignorieren und darauf warten, dass sie stillschweigend behoben werden, als unnötig hässlichen Code zu schreiben, nur um eine harmlose Warnung zu vermeiden.Antworten:
Es gibt die Option -W .
python -W ignore foo.py
quelle
Haben Sie sich den Abschnitt " Warnungen unterdrücken " in den Python-Dokumenten angesehen?
Ich kann es nicht gutheißen, aber Sie könnten einfach alle Warnungen damit unterdrücken :
Ex:
quelle
category
warnings.filterwarnings("ignore", category=DeprecationWarning)
warnings.filterwarnings
Funktion :module
. Sie können Warnungen des angegebenen Moduls ignorieren.Sie können auch eine Umgebungsvariable definieren (neue Funktion in 2010 - dh Python 2.7)
Test wie folgt : Standard
Warnungen ignorieren
Für deprecation Warnungen einen Blick auf haben , wie zu ignorieren-deprecation-Warnungen-in-Python
Hier kopiert ...
Aus der Dokumentation des
warnings
Moduls :Wenn Sie unter Windows arbeiten: Übergeben Sie
-W ignore::DeprecationWarning
als Argument an Python. Besser, um das Problem zu lösen, indem Sie auf int umwandeln .(Beachten Sie, dass in Python 3.2 Verfallswarnungen standardmäßig ignoriert werden.)
Oder:
Jetzt bekommen Sie immer noch alle anderen
DeprecationWarning
s, aber nicht die, die verursacht werden durch:quelle
tox
, HinzufügenPYTHONWARNINGS=ignore
zu wirdsetenv
die Ausgabe weniger verschmutzt.Dies ist eine alte Frage, aber es gibt einige neuere Anleitungen in PEP 565 , nach denen Sie alle Warnungen deaktivieren sollten, wenn Sie eine Python-Anwendung schreiben:
Der Grund dafür wird empfohlen, dass alle Warnungen standardmäßig deaktiviert werden, sie jedoch entscheidend über
python -W
die Befehlszeile oder wieder eingeschaltet werden könnenPYTHONWARNINGS
.quelle
Wenn Sie nichts Kompliziertes wollen, dann:
quelle
warnings.filterwarnings("default", category=FutureWarning)
Wenn Sie wissen, auf welche nutzlosen Warnungen Sie normalerweise stoßen, können Sie sie nach Nachrichten filtern.
quelle
Mir ist klar, dass dies nur für eine Nische der Situationen gilt, aber in einem
numpy
Kontext, den ich wirklich gerne benutzenp.errstate
:Verwenden Sie jedoch
np.errstate
:Das Beste daran ist, dass Sie dies nur auf ganz bestimmte Codezeilen anwenden können.
quelle
Warnungen werden über stderr ausgegeben und die einfache Lösung besteht darin, '2> / dev / null' an die CLI anzuhängen. Dies ist für viele Benutzer sehr sinnvoll, z. B. für Benutzer mit Centos 6, die mit Python 2.6-Abhängigkeiten (wie yum) konfrontiert sind, und für verschiedene Module, die in ihrer Abdeckung an den Rand des Aussterbens geraten.
Dies gilt insbesondere für die Kryptographie mit SNI usw. Sie können 2.6 für die HTTPS-Behandlung mithilfe des Prozesses unter https://urllib3.readthedocs.io/en/latest/user-guide.html#ssl-py2 aktualisieren
Die Warnung ist noch vorhanden, aber alles, was Sie möchten, wird zurückportiert. Durch die Umleitung von stderr erhalten Sie eine saubere Terminal- / Shell-Ausgabe, obwohl sich der stdout-Inhalt selbst nicht ändert.
auf FriendFX antworten. Satz eins (1) reagiert direkt auf das Problem mit einer universellen Lösung. Satz zwei (2) berücksichtigt den zitierten Anker bezüglich "Warnungen deaktivieren", der Python 2.6-spezifisch ist, und stellt fest, dass RHEL / Centos 6-Benutzer nicht direkt auf 2.6 verzichten können. Obwohl keine spezifischen Warnungen angeführt wurden, beantwortet Absatz 2 (2) die Frage 2.6, die ich am häufigsten zu den Mängeln im Kryptografiemodul bekomme und wie man die HTTPS / TLS-Leistung von Python "modernisieren" (dh aktualisieren, backportieren, reparieren) kann . In Absatz 3 (3) wird lediglich das Ergebnis der Umleitung und Aktualisierung des Moduls / der Abhängigkeiten erläutert.
quelle