Comment ignorer les avertissements de déviation en Python
je reçois ceci :
DeprecationWarning: integer argument expected, got float
Comment faire disparaître ce message? Y a-t-il un moyen d'éviter les avertissements en Python?
9 réponses
de la documentation du warnings
module :
#!/usr/bin/env python -W ignore::DeprecationWarning
si vous êtes sous Windows: passez -W ignore::DeprecationWarning
comme argument à Python. Mieux vaut résoudre le problème, en moulant à int .
(notez que dans Python 3.2, les avertissements de dépréciation sont ignorés par défaut.)
j'ai eu ces:
/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
fixe avec:
import warnings
with warnings.catch_warnings():
warnings.filterwarnings("ignore",category=DeprecationWarning)
import md5, sha
yourcode()
Maintenant vous avez encore tous les autres DeprecationWarning
s, mais pas ceux causés par:
import md5, sha
vous devez juste corriger votre code, mais juste au cas,
import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)
j'ai trouvé le moyen le plus propre pour faire ceci (en particulier sur les fenêtres) est d'ajouter ce qui suit à 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.
passer les bons arguments? : P
sur la note la plus sérieuse, vous pouvez passer l'argument-Wi::DeprecationWarning sur la ligne de commande à l'interpréteur pour ignorer les avertissements de deprecation.
Convertir l'argument de type int. C'est aussi simple que
int(argument)
aucune des réponses mentionnées n'a fonctionné pour moi donc je vais poster ma façon de résoudre cela. J'utilise le script suivant at the beginning of my main.py
et ça marche très bien.
utilisez ce qui suit tel quel (copier-coller):
import numpy as np
import . . . . . . .
def warn(*args, **kwargs):
pass
import warnings
warnings.warn = warn
# more code here...
# more code here...
ne pas vous en vouloir, mais vous êtes avertis que ce que vous faites va probablement cesser de fonctionner lorsque vous mettez à niveau python. Convertir en int et être fait avec elle.
BTW. Vous pouvez aussi écrire votre propre gestionnaire d'Avertissements. Assignez juste une fonction qui ne fait rien. comment rediriger les Avertissements python vers un flux personnalisé?
si vous voulez ignorer les Avertissements uniquement dans les fonctions, vous pouvez faire ce qui suit.
import warnings
from functools import wraps
def ignore_warnings(f):
@wraps(f)
def inner(*args, **kwargs):
with warnings.catch_warnings(record=True) as w:
warnings.simplefilter("ignore")
response = f(*args, **kwargs)
return response
return inner
@ignore_warnings
def foo(arg1, arg2):
...
write your code here without warnings
...
@ignore_warnings
def foo2(arg1, arg2, arg3):
...
write your code here without warnings
...
il suffit d'ajouter le décorateur @ignore_warnings sur la fonction que vous voulez ignorer tous les Avertissements