warning traduccion quitar ingles examples eliminar disable python suppress-warnings

traduccion - Cómo deshabilitar las advertencias de Python



warnings examples (6)

Estoy trabajando con el código con muchas advertencias inútiles (para mí en este momento) usando la biblioteca de warnings . Al leer (/ escanear) la documentación, solo encontré una manera de deshabilitar las advertencias para funciones individuales . Pero no quiero cambiar tanto el código.

¿Hay tal vez una bandera como python -no-warning foo.py ?

¿Qué recomendarías?


¿ Miraste la sección de suprimir las advertencias de los documentos de python?

Si está utilizando un código que sabe que generará una advertencia, como una función en desuso, pero no desea ver la advertencia, entonces es posible suprimir la advertencia utilizando el administrador de contexto catch_warnings:

import warnings def fxn(): warnings.warn("deprecated", DeprecationWarning) with warnings.catch_warnings(): warnings.simplefilter("ignore") fxn()

No lo apruebo, pero podría suprimir todas las advertencias con esto:

import warnings warnings.filterwarnings("ignore")

Ex:

>>> import warnings >>> def f(): ... print(''before'') ... warnings.warn(''you are warned!'') ... print(''after'') >>> f() before __main__:3: UserWarning: you are warned! after >>> warnings.filterwarnings("ignore") >>> f() before after


Esta es una pregunta antigua, pero hay algunas pautas nuevas en PEP 565 que para desactivar todas las advertencias, si está escribiendo una aplicación de Python, debe usar:

import sys import warnings if not sys.warnoptions: warnings.simplefilter("ignore")

La razón por la que se recomienda esto es que desactiva todas las advertencias de forma predeterminada, pero de manera crucial permite que se vuelvan a PYTHONWARNINGS a través de python -W en la línea de comandos o PYTHONWARNINGS .



Puede usar este código en la parte superior de main.py:

def warn(*args, **kwargs): pass import warnings warnings.warn = warn


También puede definir una variable de entorno (nueva característica en 2010 - ie python 2.7)

export PYTHONWARNINGS="ignore"

Prueba como esta: Predeterminado

$ export PYTHONWARNINGS="default" $ python >>> import warnings >>> warnings.warn(''my warning'') __main__:1: UserWarning: my warning >>>

Ignorar las advertencias

$ export PYTHONWARNINGS="ignore" $ python >>> import warnings >>> warnings.warn(''my warning'') >>>


las advertencias se emiten 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 atascados 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 proc en: https://urllib3.readthedocs.io/en/latest/user-guide.html#ssl-py2

la advertencia aún está en su lugar, pero todo lo que desea es portado. la redirección de stderr lo dejará con una salida de terminal / shell limpia, aunque el contenido de la salida estándar 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 anclaje citado re ''deshabilita las advertencias'' que es específico 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, en el párrafo dos (2) se responde la pregunta 2.6. Con más frecuencia, se trata de las fallas 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 de usar la redirección y la actualización del módulo / dependencias.