¿Cómo deshabilitar las advertencias de Python?

5 minutos de lectura

¿Como deshabilitar las advertencias de Python
enmarcador

Estoy trabajando con un código que arroja muchas (para mí en este momento) advertencias inútiles usando el warnings Biblioteca. Leyendo (/ escaneando) la documentación solo encontré una manera para deshabilitar las advertencias para funciones individuales. Pero no quiero cambiar mucho del código.

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

¿Qué recomendarías?

  • @MartinSamson Generalmente estoy de acuerdo, pero hay casos legítimos para ignorar las advertencias. Obtengo varios de estos al usar la sintaxis Xpath válida en defusedxml: 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]. Preferiría ignorar las advertencias ahora y esperar a que se arreglen silenciosamente que escribir un código innecesariamente feo solo para evitar una advertencia inofensiva.

    – Pedro

    22 de diciembre de 2016 a las 16:56


  • desactivar advertencias específicas: stackoverflow.com/questions/9134795/…

    – usuario3226167

    30 de noviembre de 2018 a las 8:48

¿Como deshabilitar las advertencias de Python
Miguel

mira el Advertencias de supresión temporal sección de los documentos de Python:

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

import warnings

def fxn():
    warnings.warn("deprecated", DeprecationWarning)

with warnings.catch_warnings():
    warnings.simplefilter("ignore")
    fxn()

No lo apruebo, pero podrías simplemente suprimir todas las advertencias con este:

import warnings
warnings.filterwarnings("ignore")

Ex:

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

  • @Framester: sí, en mi opinión, esta es la forma más limpia de suprimir advertencias específicas, las advertencias están ahí en general porque algo podría estar mal, por lo que suprimir todas las advertencias a través de la línea de comandos podría no ser la mejor opción.

    – Miguel

    22 de enero de 2013 a las 16:34


  • @Framester: también enumeré la otra opción con un ejemplo … No me gusta tanto (por la razón que di en el comentario anterior), pero al menos ahora tiene las herramientas.

    – Miguel

    22 de enero de 2013 a las 16:54

  • Si solo espera recibir advertencias de una categoría específica, puede pasarla usando el category argumento: warnings.filterwarnings("ignore", category=DeprecationWarning)

    – ostrokach

    12 de junio de 2017 a las 1:20


  • Esto es útil para mí en este caso porque html5lib escupe advertencias lxml aunque no está analizando xml. Gracias

    – james campbell

    25 de julio de 2017 a las 17:38

  • También hay un parámetro útil para el warnings.filterwarnings función: module. Le permite ignorar las advertencias del módulo especificado.

    – nombre de usuario

    19 de marzo de 2018 a las 10:53

¿Como deshabilitar las advertencias de Python
pavel anossov

ahí está el -W opción.

python -W ignore foo.py

  • Para ignorar solo un mensaje específico, puede agregar detalles en el parámetro. man python lo describe en detalles, excepto la especificación del nombre del módulo. Pasé mucho tiempo adivinándolo. Finalmente obtuve este comando python3 -W ignore::UserWarning:git.cmd:914 ./test.py por advertencia /usr/local/lib/python3.4/dist-packages/git/cmd.py:914: UserWarning: Python 3.5 support is deprecated...

    – usuario3132194

    29 de abril de 2021 a las 7:09

  • Si usa ipython, ¿hay alguna manera de hacer esto al llamar a una función?

    –Steven Thomas

    14 de enero a las 11:50

1646758397 436 ¿Como deshabilitar las advertencias de Python
holger bille

También puede definir una variable de entorno (nueva función en 2010, es decir, Python 2.7)

export PYTHONWARNINGS="ignore"

Prueba así: Por defecto

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

Ignorar advertencias

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

Para advertencias de desaprobación echa un vistazo a cómo-ignorar-las-advertencias-de-desaprobación-en-python

Copiado aquí…

De la documentación de la warnings módulo:

 #!/usr/bin/env python -W ignore::DeprecationWarning

Si estás en Windows: pasa -W ignore::DeprecationWarning como argumento para Python. Sin embargo, es mejor resolver el problema, lanzando a En t.

(Tenga en cuenta que en Python 3.2, las advertencias de obsolescencia se ignoran de forma predeterminada).

O:

import warnings

with warnings.catch_warnings():
    warnings.filterwarnings("ignore", category=DeprecationWarning)
    import md5, sha

yourcode()

Ahora todavía obtienes todos los demás DeprecationWarnings, pero no los causados ​​por:

import md5, sha

  • Esto es especialmente útil para ignorar las advertencias al realizar pruebas. Utilizando toxagregando PYTHONWARNINGS=ignore para setenv hace que la salida sea menos sucia.

    – Kurt Bourbaki

    13 de noviembre de 2016 a las 11:44

  • Muy útil para AWS CLI también.

    – mckenzm

    9 de agosto de 2019 a las 23:37

  • Pero esto no ignora la advertencia de desaprobación. ¿Puedo preguntar cómo incluir ese?

    – Wey Shi

    16 de noviembre de 2019 a las 8:31


1646758398 724 ¿Como deshabilitar las advertencias de Python
Chris_Rands

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:

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 permite que se vuelvan a activar a través de python -W en la línea de comando o PYTHONWARNINGS.

  • Y para volver las cosas al comportamiento predeterminado: warnings.filterwarnings("default", category=FutureWarning)

    –Hans Bouwmeester

    14 de abril de 2019 a las 0:47


1646758400 621 ¿Como deshabilitar las advertencias de Python
Prajot Kuvalekar

Para no hacerlo complicado, solo usa estas dos líneas

import warnings
warnings.filterwarnings('ignore')

1646758402 533 ¿Como deshabilitar las advertencias de Python
usuario3226167

Si sabe cuáles son las advertencias inútiles que suele encontrar, puede filtrarlas por mensaje.

import warnings

#ignore by message
warnings.filterwarnings("ignore", message="divide by zero encountered in divide")

#part of the message is also okay
warnings.filterwarnings("ignore", message="divide by zero encountered") 
warnings.filterwarnings("ignore", message="invalid value encountered")

1646758402 331 ¿Como deshabilitar las advertencias de Python
danny bullis

Cuando todo lo demás falla, usa esto: https://github.com/polvoazul/cállate

pip install shutup

luego agregue a la parte superior de su código:

import shutup; 
shutup.please()

Descargo de responsabilidad: Soy el dueño de ese repositorio. Lo escribí después de la quinta vez que lo necesitaba y no pude encontrar nada simple que funcionara.

  • útil… y divertido! ¡Dos por el precio de uno!

    – Adrián Tompkins

    3 de febrero a las 16:00

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad