Je travaille avec du code qui lance beaucoup (pour moi en ce moment) d'avertissements inutiles en utilisant la warnings
bibliothèque. En lisant (/ scannant) la documentation, je n'ai trouvé qu'un moyen de désactiver les avertissements pour les fonctions individuelles . Mais je ne veux pas changer autant de code.
Y a-t-il peut-être un drapeau comme python -no-warning foo.py
?
Que recommanderais-tu?
python
suppress-warnings
Framester
la source
la source
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]
. Je préfère ignorer les avertissements maintenant et attendre qu'il soit corrigé en silence que d'écrire du code inutilement laid juste pour éviter un avertissement inoffensif.Réponses:
Il y a l' option -W .
python -W ignore foo.py
la source
Avez-vous regardé la section supprimer les avertissements des documents python?
Je ne l'approuve pas, mais vous pouvez simplement supprimer tous les avertissements avec ceci:
Ex:
la source
category
argument:warnings.filterwarnings("ignore", category=DeprecationWarning)
warnings.filterwarnings
fonction:module
. Il vous permet d'ignorer les avertissements du module spécifié.Vous pouvez également définir une variable d'environnement (nouvelle fonctionnalité en 2010 - c'est-à-dire python 2.7)
Testez comme ceci: Par défaut
Ignorer les avertissements
Pour les avertissements de dépréciation, regardez comment ignorer les avertissements de dépréciation en python
Copié ici ...
De la documentation du
warnings
module :Si vous êtes sous Windows: passez
-W ignore::DeprecationWarning
comme argument à Python. Mieux encore pour résoudre le problème, en effectuant un cast vers int .(Notez que dans Python 3.2, les avertissements de dépréciation sont ignorés par défaut.)
Ou:
Maintenant, vous obtenez toujours tous les autres
DeprecationWarning
, mais pas ceux causés par:la source
tox
, ajouterPYTHONWARNINGS=ignore
àsetenv
rend la sortie moins sale.C'est une vieille question, mais il y a des instructions plus récentes dans PEP 565 pour désactiver tous les avertissements si vous écrivez une application python, vous devez utiliser:
La raison pour laquelle cela est recommandé est qu'il désactive tous les avertissements par défaut mais permet de les réactiver via via
python -W
la ligne de commande ouPYTHONWARNINGS
.la source
Si vous ne voulez pas quelque chose de compliqué, alors:
la source
warnings.filterwarnings("default", category=FutureWarning)
Si vous savez quels sont les avertissements inutiles que vous rencontrez habituellement, vous pouvez les filtrer par message.
la source
Je me rends compte que cela ne s'applique qu'à une niche des situations, mais dans un
numpy
contexte que j'aime vraiment utilisernp.errstate
:Cependant, en utilisant
np.errstate
:La meilleure partie étant que vous ne pouvez l'appliquer qu'à des lignes de code très spécifiques.
la source
les avertissements sont générés via stderr et la solution simple consiste à ajouter «2> / dev / null» à la CLI. cela a beaucoup de sens pour de nombreux utilisateurs tels que ceux avec centos 6 qui sont bloqués avec des dépendances python 2.6 (comme yum) et divers modules sont poussés au bord de l'extinction dans leur couverture.
cela est particulièrement vrai pour la cryptographie impliquant SNI et cetera. on peut mettre à jour 2.6 pour la gestion HTTPS en utilisant le proc à: https://urllib3.readthedocs.io/en/latest/user-guide.html#ssl-py2
l'avertissement est toujours en place, mais tout ce que vous voulez est rétroporté. la redirection de stderr vous laissera une sortie terminal / shell propre bien que le contenu stdout lui-même ne change pas.
répondre à FriendFX. phrase un (1) répond directement au problème avec une solution universelle. la phrase deux (2) prend en compte l'ancre citée concernant «désactiver les avertissements» qui est spécifique à python 2.6 et note que les utilisateurs de RHEL / centos 6 ne peuvent pas se passer directement de 2.6. bien qu'aucun avertissement spécifique n'ait été cité, le paragraphe deux (2) répond à la question 2.6 que je reçois le plus souvent concernant les lacunes du module de cryptographie et comment on peut "moderniser" (c.-à-d., mettre à niveau, rétroporter, corriger) les performances HTTPS / TLS de python . le paragraphe trois (3) explique simplement le résultat de l'utilisation de la redirection et de la mise à niveau du module / des dépendances.
la source