una - Cómo ignorar las advertencias de depreciación en Python
fijar ejes matplotlib (9)
Sigo recibiendo esto:
DeprecationWarning: integer argument expected, got float
¿Cómo hago para que este mensaje desaparezca? ¿Hay alguna forma de evitar las advertencias en Python?
Convierte el argumento a int. Es tan simple como
int(argument)
Cuando desee ignorar advertencias solo en funciones, puede hacer lo siguiente.
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
...
Simplemente agregue el decorador @ignore_warnings en la función que desea ignorar todas las advertencias
De la documentación del módulo de warnings
:
#!/usr/bin/env python -W ignore::DeprecationWarning
Si está en Windows: pase -W ignore::DeprecationWarning
como argumento para Python. Mejor aún para resolver el problema, mediante conversión a int .
(Tenga en cuenta que en Python 3.2, las advertencias de desactivación se ignoran por defecto).
Deberías simplemente arreglar tu código, pero por las dudas,
import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)
Encontré que la manera más limpia de hacer esto (especialmente en Windows) es agregar lo siguiente a C: / Python26 / Lib / site-packages / sitecustomize.py:
import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)
Tenga en cuenta que tuve que crear este archivo. Por supuesto, cambie el camino a Python si el suyo es diferente.
No le da una paliza, pero se le advierte que lo que está haciendo probablemente dejará de funcionar la próxima vez que actualice Python. Convierta a int y termine con esto.
Por cierto. También puede escribir su propio controlador de advertencias. Simplemente asigne una función que no hace nada. ¿Cómo redirigir las advertencias de Python a una secuencia personalizada?
Pasar los argumentos correctos? :PAG
En una nota más seria, puede pasar el argumento -Wi :: DeprecationWarning en la línea de comando al intérprete para ignorar las advertencias de desaprobación.
Tenía estos:
/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
Solucionado con:
import warnings
with warnings.catch_warnings():
warnings.filterwarnings("ignore",category=DeprecationWarning)
import md5, sha
yourcode()
Ahora todavía obtienes todos los demás DeprecationWarning
, pero no los causados por:
import md5, sha
Utilizo lo siguiente at the beginning of my main.py
script at the beginning of my main.py
y funciona bien:
def warn(*args, **kwargs):
pass
import warnings
warnings.warn = warn
import numpy as np
import . . . . . . .