error de Python: ImportError: urllib3 v2.0 solo admite OpenSSL 1.1.1

error de Python: ImportError: urllib3 v2.0 solo admite OpenSSL 1.1.1+

Descripción del análisis del problema
: el paquete de solicitudes presenta urllib3 y la nueva versión de urllib3 requiere OpenSSL 1.1.1+ o superior; de lo contrario, se informará un error:
ImportError: urllib3 v2.0 solo admite OpenSSL 1.1.1+,
actualmente el 'ssl 'El módulo está compilado con 'OpenSSL 1.0.2k-fips 26 de enero de 2017'. Consulte: https://github.com/urllib3/urllib3/issues/2168

3. Solución
Necesidad de actualizar openssl

Descargar y compilar openssl

1. 依赖包
安装编译 OpenSSL 所需的包,包括 gcc、make、perl 和 zlib-devel。可以通过运行以下命令完成:
yum install -y gcc make perl zlib-devel

2. 安装包下载
下载 OpenSSL 1.1.1 的源码包,可以从 OpenSSL 官网下载(https://www.openssl.org/source/openssl-1.1.1.tar.gz)或使用以下命令下载:
wget https://www.openssl.org/source/openssl-1.1.1.tar.gz
3. 解压
解压源码包并进入解压后的目录:
tar -zxvf openssl-1.1.1.tar.gz
cd openssl-1.1.1  

4.初始化并编译、安装
运行以下命令编译 OpenSSL:
./config   --prefix=/opt/openssl-1.1.1

make
make install

5. 添加环境变量
vim /etc/profile
 export PATH=/opt/openssl-1.1.1/bin:$PATH
 export LD_LIBRARY_PATH=/opt/openssl-1.1.1/lib:$LD_LIBRARY_PATH

source /etc/profile

这会在系统中安装新的 OpenSSL 版本。可以通过运行以下命令检查 OpenSSL 版本:
openssl version

如果输出结果中的版本号为 1.1.1 或更高版本,则说明 OpenSSL 已成功升级。

6. 做软连接
如果还是原来的版本,没变成新版本,可以做软连接使其挂用新版本  
将原来的openssl,做备份
mv /usr/bin/openssl     /usr/bin/openssl_20230525bak
mv /usr/lib64/openssl   /usr/lib64/openssl_20230525bak
然后将新安装的OpenSSL做软连接到这个路径
ln  -s  /opt/openssl-1.1.1/bin/openssl   /usr/bin/openssl

再执行以下命令检查 OpenSSL 版本:
openssl version

完成!!



Después de actualizar openssl, import urllib3 aún informa un error.
Si ha confirmado que OpenSSL en el sistema se muestra como una nueva versión, pero Python aún usa la versión anterior, puede deberse a que el intérprete de Python no está vinculado correctamente a la nueva versión. de OpenSSL.

Idea 1: Recompilar Python Recompilar
Python es una de las formas de resolver el problema de que el intérprete de Python no está vinculado correctamente a la nueva versión de OpenSSL. Esto garantiza que Python utilice una nueva versión de la biblioteca OpenSSL.

Configure las opciones de compilación: abra una terminal de línea de comandos, cambie al directorio del código fuente de Python y ejecute el siguiente comando para configurar las opciones de compilación:

./configure --with-openssl=/path/to/openssl
–with-ssl:表示使用了系统中已安装的 OpenSSL 库。
–with-openssl:表示使用了自带的 OpenSSL 库。

Reemplace /path/to/openssl con la ruta de instalación de la nueva versión de la biblioteca OpenSSL. Esta opción le indica al compilador de Python que utilice una nueva versión de OpenSSL durante la compilación.

Compile e instale: ejecute los siguientes comandos en una terminal de línea de comandos para compilar e instalar el Python reconfigurado:

make
make install


Esto compilará el código fuente de Python y lo instalará en su sistema. Tenga en cuenta que al ejecutar sudo make install, es posible que deba ingresar la contraseña de administrador.

Verifique los resultados de la instalación: una vez completadas la recompilación y la instalación, puede verificar que el intérprete de Python esté vinculado a la nueva versión de OpenSSL ejecutando el siguiente comando:

python -c "import ssl; print(ssl.OPENSSL_VERSION)"


Utilice --with-openssl para pruebas personales. Recomendar ~

Idea 2: especifique el intérprete de Python para vincularlo a la nueva versión de OpenSSL sin volver a compilar Python.
Si ha instalado una nueva versión de OpenSSL y desea especificar el intérprete de Python para vincularlo a la nueva versión de OpenSSL sin volver a compilar Python, puede agregar la nueva versión de la ruta de la biblioteca OpenSSL al entorno de ejecución del intérprete de Python configurando la variable de entorno LD_LIBRARY_PATH (Linux) o DYLD_LIBRARY_PATH (macOS).

Por ejemplo, suponiendo que la nueva versión de la biblioteca OpenSSL se encuentra en /usr/local/ssl/lib, puede hacer lo siguiente:

export LD_LIBRARY_PATH=/usr/local/ssl/lib:$LD_LIBRARY_PATH



En el entorno interactivo de Python, ejecute el siguiente código para ver la ruta a la biblioteca OpenSSL utilizada en Python:

import ssl
print(ssl.OPENSSL_VERSION)
print(ssl._ssl.__file__)


Probé aquí, no importa cómo cambie LD_LIBRARY_PATH, siempre se refiere al directorio de instalación de Python: lib/python3.8/lib-dynload/_ssl.cpython-38-x86_64-linux-gnu.so
 

Supongo que te gusta

Origin blog.csdn.net/h952520296/article/details/132754787
Recomendado
Clasificación