260 votes

Comment ignorer les avertissements de dépréciation en Python ?

J'ai toujours ce message :

DeprecationWarning: integer argument expected, got float

Comment faire pour que ce message disparaisse ? Existe-t-il un moyen d'éviter les avertissements en Python ?

14 votes

Quand rien d'autre ne fonctionne : $ pip install shutup . Puis, en haut du code import shutup;shutup.please() . Cela désactivera tous les avertissements.

318voto

ismail Points 19146

Vous devriez juste corriger votre code mais juste au cas où,

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

3 votes

Cela a fonctionné pour moi en utilisant iPython

61 votes

Cela ne fonctionne pas du tout pour moi, je vois toujours des avertissements de dépréciation.

20 votes

@user1244215 Je peux me tromper mais je pense que l'endroit où vous exécutez votre code a une importance. warnings.filterwarnings("ignore", category=DeprecationWarning) . Je pense que vous devez l'exécuter après avoir importé la bibliothèque qui émet les avertissements, mais je peux me tromper.

238voto

Eddy Pronk Points 3084

J'avais ça :

/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

Je l'ai réparé avec :

import warnings

with warnings.catch_warnings():
    warnings.filterwarnings("ignore",category=DeprecationWarning)
    import md5, sha

yourcode()

Maintenant, vous avez toujours tous les autres DeprecationWarning mais pas ceux causés par :

import md5, sha

3 votes

Génial, merci beaucoup !! (Il m'a fallu un moment pour réaliser que je pouvais aussi envelopper des bouts de code non importés dans ceci, puisque certains paquets généraient aussi des DeprecationWarnings lorsqu'ils étaient utilisés après l'importation). C'est un moyen très agréable de ne faire taire que les DeprecationWarnings spécifiques que j'ai déjà regardés et que j'ai décidé d'ignorer.

2 votes

Fonctionne sous Windows et Linux, et est totalement indépendant des paramètres donnés à l'exécutable. Il fonctionne donc tout le temps. En outre, il ne désactive les avertissements de dépréciation que pour les bibliothèques explicites, de sorte que lorsque les prochaines seront dépréciées, vous serez toujours informé pour mettre à jour votre code source.

153voto

Stephan202 Points 27707

D'après la documentation de l warnings module :

 #!/usr/bin/env python -W ignore::DeprecationWarning

Si vous êtes sous Windows : passez -W ignore::DeprecationWarning en tant qu'argument pour Python. Il est préférable de résoudre le problème en coulant en int .

(Notez que dans Python 3.2, les avertissements de dépréciation sont ignorés par défaut).

10 votes

J'aimerais que ça marche... Je reçois un /usr/bin/env: python -W ignore::DeprecationWarning: No such file or directory erreur. Cela fonctionne si je lance python avec l'option -W ignore::DeprecationWarning sur la ligne de commande, mais /usr/bin/env ne s'en occupe pas.

7 votes

Il semble que ce soit une solution réservée à Windows.

23 votes

Vous pouvez définir la variable d'environnement PYTHONWARNINGS ; ceci a fonctionné pour moi export PYTHONWARNINGS="ignore::DeprecationWarning:simplejson" pour désactiver les avertissements de déprédation de django json de sorl

32voto

Tristan Havelick Points 8261

J'ai trouvé que la façon la plus propre de le faire (surtout sous Windows) est d'ajouter ce qui suit à la section C:\Python26\Lib\site -packages \sitecustomize.py :

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

Notez que j'ai dû créer ce fichier. Bien sûr, changez le chemin vers python si le vôtre est différent.

5voto

shylent Points 4590

Passer les bons arguments ? :P

Plus sérieusement, vous pouvez passer l'argument -Wi::DeprecationWarning sur la ligne de commande à l'interpréteur pour ignorer les avertissements de dépréciation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X