Estoy usando Python 2.7.3 y Solicitudes. Instalé Solicitudes a través de pip. Creo que es la última versión. Estoy corriendo en Debian Wheezy.
He usado Solicitudes muchas veces en el pasado y nunca enfrenté este problema, pero parece que cuando Requests
hago solicitudes https obtengo una InsecurePlatform
excepción.
El error menciona urllib3
, pero no tengo eso instalado. Lo instalé para verificar si resolvió el error, pero no fue así.
/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3
/util/ssl_.py:79: InsecurePlatformWarning: A true SSLContext object is not
available. This prevents urllib3 from configuring SSL appropriately and
may cause certain SSL connections to fail. For more information, see
https://urllib3.readthedocs.org/en/latest
/security.html#insecureplatformwarning.
¿Alguna idea de por qué estoy recibiendo esto? Revisé los documentos, tal como se especifica en el mensaje de error, pero los documentos dicen que importen urllib3 y que deshabiliten la advertencia o proporcionen un certificado.
fuente
sudo apt-get install python-dev libffi-dev libssl-dev
pip install 'requests[security]'
Las solicitudes 2.6 introdujeron esta advertencia para los usuarios de Python antes de 2.7.9 con solo módulos SSL disponibles.
Suponiendo que no puede actualizar a una versión más nueva de python, esto instalará más bibliotecas SSL de python actualizadas:
SIN EMBARGO, esto puede fallar en algunos sistemas sin las dependencias de compilación para pyOpenSSL. En sistemas debian, ejecutar esto antes del comando pip anterior debería ser suficiente para que pyOpenSSL construya:
fuente
No uso esto en producción, solo algunos corredores de prueba. Y para reiterar la documentación de urllib3
Editar / Actualizar:
Lo siguiente también debería funcionar:
fuente
Si no puede actualizar su versión de Python a 2.7.9 y desea suprimir las advertencias,
puede degradar su versión de 'solicitudes' a 2.5.3:
Acerca de la versión: http://fossies.org/diffs/requests/2.5.3_vs_2.6.0/requests/packages/urllib3/util/ssl_.py-diff.html
fuente
De hecho, puedes probar esto.
requests.post("https://www.google.com", verify=False)
Puede leer el código de las solicitudes.
"C:\Python27\Lib\site-packages\requests\sessions.py"
fuente
Todas las soluciones dadas aquí no han ayudado (estoy limitado a Python 2.6.6). He encontrado la respuesta en un simple cambio para pasar a pip:
Esto le dice a pip que está bien tomar el módulo de pypi.python.org.
Para mí, el problema es el proxy de mi empresa detrás de su firewall que hace que parezca un cliente malicioso para algunos servidores. Hurra de seguridad.
Actualización: consulte la respuesta de @Alex para ver los cambios en los dominios PyPi y las
--trusted-host
opciones adicionales que se pueden agregar. (Copiaría / pegaría aquí, pero su respuesta, entonces +1 a él)fuente
Esta respuesta no está relacionada, pero si desea deshacerse de la advertencia y obtener la siguiente advertencia de las solicitudes:
InsecurePlatformWarning /usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util/ssl_.py:79: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
Puede deshabilitarlo agregando la siguiente línea a su código de Python:
requests.packages.urllib3.disable_warnings()
fuente
bash
Primero tuve que ir a (desde ZSH). LuegoSe solucionó el problema.
fuente
Esto se produjo por mí en Ubuntu 14.04 (con Python 2.7.6) la semana pasada después de que hice una
apt-get dist-upgrade
que incluíalibssl1.1:amd64
desdedeb.sury.org
.Como ejecuto
certbot-auto renew
un trabajo cron, también lo uso--no-self-upgrade
para reducir el mantenimiento no programado. Esto parece haber sido la fuente del problema.Para corregir el error, todo lo que necesitaba hacer era convertirme en root (con
su
el--login
interruptor) y dejar que secertbot-auto
actualizara. Es decir:en lugar de lo que normalmente se ejecuta desde el crontab de root:
Después de eso, los renwals de letsencrypt se ejecutaron normalmente una vez más.
fuente
Para mí no hay trabajo, necesito pip de actualización ...
Debian / Ubuntu
instalar dependencias
actualizar pip e instalar paquetes
Si quieres eliminar dependencias
fuente
Acabo de tener un problema similar en un servidor CentOS 5 donde instalé python 2.7.12 en / usr / local sobre una versión mucho más antigua de python2.7. Actualizar a CentOS 6 o 7 no es una opción en este servidor en este momento.
Algunos de los módulos de python 2.7 todavía existían en la versión anterior de python, pero pip no se pudo actualizar porque el paquete de criptografía más reciente no es compatible con los paquetes de CentOS 5.
Específicamente, las 'solicitudes de instalación de pip [seguridad]' fallaban porque la versión de openssl en CentOS 5 era 0.9.8e, que ya no es compatible con criptografía> 1.4.0.
Para resolver el problema original de los OP que hice:
Esta criptografía instalada 1.3.4 que funciona con openssl-0.9.8e. cryptograpy 1.3.4 también es suficiente para satisfacer el requisito del siguiente comando.
Este comando ahora se instala porque no intenta instalar criptografía> 1.4.0.
Tenga en cuenta que en Centos 5 también necesitaba:
Para permitir que se desarrolle la criptografía
fuente
A continuación se muestra cómo me funciona en Python 3.6:
fuente
No instale pyOpenSSL ya que pronto quedará en desuso. El mejor enfoque actual es:
fuente
si solo quiere detener la advertencia insegura como:
hacer:
es la clave, los siguientes no son buenos en eso:
o
pero TIENE QUE SABER que eso puede causar riesgos potenciales de seguridad .
fuente
Tuve el mismo problema con
Mac
Pycharm community edition 2019.3
Python interpreter 3.6.
Actualizar pip con 20.0.2 funcionó para mí.
Pycharm --> Preferences --> Project Interpreter --> click on pip --> specify version 20.0.2 --> Install package
fuente