es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error de Python [SSL: CERTIFICATE_VERIFY_FAILED] en Windows 10 y Spyder

Cuando ejecuté por última vez el código a continuación en enero de 2021, en Spyder 3.x / Windows 10 funcionó correctamente. Cuando intenté ejecutarlo esta semana, obtuve una serie de errores que llevaron a este error final:

URLError:

En el proceso de tratar de solucionar el problema, actualicé de Spyder 3 a Spyder 5.1.5, aunque el problema persiste.

Creo que este es el ejemplo mínimo reproducible:

import urllib.request
my_url = ‘https://stackoverflow.com/’
html = urllib.request.urlopen(my_url).read()
print(html)

El problema está en la tercera línea del código. La declaración de impresión solo verifica que hayamos pasado ese punto. Ocurre con algunos sitios web pero no con otros, por ejemplo, se produce el problema si inicio “url = stackoverflow.com” pero no si lo configuro en “https://en.wikipedia.org/wiki/MainPage”.

Curiosamente, el mismo código y error no ocurren cuando lo ejecuto en Spyder 3.2.6 en Linux.

La pregunta es:

¿Algún consejo?

Información de antecedentes:

He notado que hay muchas preguntas sobre errores [SSL: CERTIFICATE_VERIFY_FAILED] en StackOverflow, pero no veo cómo aplicar sus respuestas a mi situación. Algunas son para Mac OS o para Linux y sugieren escribir

[path] Install\ Certificates.command

y no sé cómo hacer esto en Windows 10, y mucho menos cómo identificar la ruta. También me confundí sobre cómo instalar PIP (sugerido en algunas soluciones) dado la cadena Anaconda/Spyder en Windows 10.

Aún más información de antecedentes:

Estoy usando Spyder IDE 5.1.5 y la caja de ayuda de Spyder tiene esto que decir sobre python, etc.:

Python 3.7.3 64-bit | Qt 5.9.6 | PyQt5 5.9.2 | Windows 10

Aunque me sorprende que no mencione que tengo Spyder instalado a través de Anaconda. Además, me desconcierta que cuando escribo “python -version” en el símbolo del sistema de Windows, obtengo el error:

Python no se encontró; ejecute sin argumentos para instalar desde Microsoft Store…

…lo cual parece peculiar ya que Spyder obviamente está ejecutando otro código de Python sin problemas.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que hay un problema con el certificado SSL del sitio web al que se está accediendo. Una posible solución es intentar actualizar el paquete de autoridades de certificación (CA, por sus siglas en inglés) que Python utiliza para verificar los certificados SSL. Esto se puede hacer utilizando el paquete certifi:

    pip install certifi
    

    Luego, agrega el siguiente código al principio de tu archivo Python:

    import ssl
    import certifi
    
    ssl._create_default_https_context = ssl.create_default_context
    ssl._create_unverified_context = ssl._create_stdlib_context(cert_file=certifi.where())
    

    Este código establece el contexto SSL para utilizar el contexto predeterminado del sistema y también especifica la ruta al paquete de autoridades de certificación actualizado proporcionado por certifi. Esto debería permitir que Python verifique el certificado SSL y evite el error CERTIFICATE_VERIFY_FAILED.

    Alternativamente, si el problema persiste, puedes intentar desactivar por completo la verificación SSL (aunque generalmente no se recomienda por razones de seguridad). Puedes hacer esto agregando el siguiente código:

    import ssl
    
    ssl._create_default_https_context = ssl._create_unverified_context
    

    Esto creará un contexto SSL que omitirá la verificación del certificado, lo que debería permitir que el código se ejecute sin errores. Sin embargo, utiliza este enfoque con precaución y solo con fines de prueba.

    En cuanto al problema de la versión de Python, parece que el IDE Spyder está utilizando una instalación separada de Python (proporcionada por Anaconda), mientras que el símbolo del sistema está utilizando la instalación predeterminada de Python del sistema. Esto a veces puede causar conflictos y errores. Si necesitas usar Python desde el símbolo del sistema, es posible que debas modificar la variable de entorno PATH del sistema para que apunte al directorio de instalación de Python de Anaconda. Alternativamente, puedes usar el símbolo del sistema incorporado de Anaconda (Anaconda Prompt) en lugar del símbolo del sistema predeterminado de Windows.

Comments are closed.