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?

115
demandé sur aculich 2009-05-18 22:42:44

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.)

91
répondu Stephan202 2017-09-28 07:00:50

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
154
répondu Eddy Pronk 2016-12-15 15:32:00

vous devez juste corriger votre code, mais juste au cas,

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning) 
138
répondu ismail 2012-04-10 19:03:58

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.

25
répondu Tristan Havelick 2010-03-04 17:35:36

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.

6
répondu shylent 2009-05-18 18:49:35

Convertir l'argument de type int. C'est aussi simple que

int(argument)
5
répondu Gonzalo Quero 2009-05-18 18:49:38

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...

3
répondu seralouk 2018-07-11 08:34:25

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é?

2
répondu SpliFF 2017-05-23 11:47:14

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

1
répondu Trideep Rath 2017-12-04 21:08:28