Estoy trabajando con un código que arroja muchas (para mí en este momento) advertencias inútiles usando la warnings
biblioteca. Leyendo (/ escaneando) la documentación, solo encontré una manera de desactivar las advertencias para funciones individuales . Pero no quiero cambiar tanto el código.
¿Tal vez hay una bandera como python -no-warning foo.py
?
¿Qué recomendarías?
python
suppress-warnings
Framester
fuente
fuente
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]
. Prefiero ignorar las advertencias ahora y esperar a que se solucione en silencio que escribir código innecesariamente feo solo para evitar una advertencia inofensiva.Respuestas:
Existe la opción -W .
python -W ignore foo.py
fuente
¿ Viste la sección de advertencias de supresión de los documentos de Python?
No lo apruebo, pero podría suprimir todas las advertencias con esto:
Ex:
fuente
category
argumento:warnings.filterwarnings("ignore", category=DeprecationWarning)
warnings.filterwarnings
función:module
. Le permite ignorar las advertencias del módulo especificado.También puede definir una variable de entorno (nueva característica en 2010, es decir, Python 2.7)
Prueba como esta: Predeterminado
Ignorar advertencias
Para advertencias de desaprobación, eche un vistazo a cómo-ignorar-advertencias-desaprobación-en-python
Copiado aquí ...
De la documentación del
warnings
módulo :Si estás en Windows: pasa
-W ignore::DeprecationWarning
como argumento a Python. Sin embargo, es mejor resolver el problema enviando a int .(Tenga en cuenta que en Python 3.2, las advertencias de desaprobación se ignoran de forma predeterminada).
O:
Ahora todavía obtienes todos los otros
DeprecationWarning
s, pero no los causados por:fuente
tox
, agregandoPYTHONWARNINGS=ignore
asetenv
hace que la salida sea menos sucia.Esta es una vieja pregunta, pero hay una nueva guía en PEP 565 que para desactivar todas las advertencias si está escribiendo una aplicación de Python, debe usar:
La razón por la que se recomienda esto es que desactiva todas las advertencias de manera predeterminada, pero permite que se vuelvan a activar
python -W
en la línea de comandos oPYTHONWARNINGS
.fuente
Si no quieres algo complicado, entonces:
fuente
warnings.filterwarnings("default", category=FutureWarning)
Si sabe cuáles son las advertencias inútiles que suele encontrar, puede filtrarlas por mensaje.
fuente
Me doy cuenta de que esto solo es aplicable a un nicho de las situaciones, pero dentro de un
numpy
contexto que realmente me gusta usarnp.errstate
:Sin embargo, usando
np.errstate
:La mejor parte es que puede aplicar esto solo a líneas de código muy específicas.
fuente
Las advertencias se envían a través de stderr y la solución simple es agregar '2> / dev / null' a la CLI. Esto tiene mucho sentido para muchos usuarios, como aquellos con centos 6 que están atrapados con las dependencias de Python 2.6 (como yum) y varios módulos están siendo empujados al borde de la extinción en su cobertura.
Esto es especialmente cierto para la criptografía que involucra SNI, etc. se puede actualizar 2.6 para el manejo de HTTPS utilizando el proceso en: https://urllib3.readthedocs.io/en/latest/user-guide.html#ssl-py2
la advertencia todavía está en su lugar, pero todo lo que desea se transfiere. la redirección de stderr te dejará con una salida de terminal / shell limpia, aunque el contenido stdout en sí no cambia.
respondiendo a FriendFX. la oración uno (1) responde directamente al problema con una solución universal. la oración dos (2) toma en cuenta el ancla citada sobre 'deshabilitar advertencias' que es específica de Python 2.6 y señala que los usuarios de RHEL / centos 6 no pueden prescindir directamente de 2.6. aunque no se citaron advertencias específicas, el párrafo dos (2) responde a la pregunta 2.6 que recibo con más frecuencia sobre las deficiencias en el módulo de criptografía y cómo se puede "modernizar" (es decir, actualizar, backport, corregir) el rendimiento HTTPS / TLS de Python . el párrafo tres (3) simplemente explica el resultado del uso del redireccionamiento y la actualización del módulo / dependencias.
fuente