网上有很多关于解决Python3.7导入_ssl模块失败的文章,但实际操作多数不成功,下面的方法亲测可用。
一、安装依赖
Python3.7编译安装ssl模块需要安装openssl或libressl(二选一),系统自带或通过命令安装的openssl是1.0.1版本,不满足python3.7的需求。对ssl库的版本要求如下:
- openssl >= 1.0.2
- libressl >= 2.6.4
本人所用环境:
- Ubutun 14.04
- Python3.7.3 下载链接:https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz
下载安装Libressl
- 官网:https://www.libressl.org/ , 下载连接:https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.9.1.tar.gz
- ./config –prefix=/usr/local/ssl
- make
- sudo make intall
- mv /usr/bin/openssl /usr/bin/openssl.bak (如果之前未安装ssl,此步骤可跳过)
- mv /usr/include/openssl /usr/include/openssl.bak (如果之前未安装ssl,此步骤可跳过)
- ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
- ln -s /usr/local/ssl/include/openssl /usr/include/openssl
- 在/etc/ld.so.conf.d 目录创建libressl-2.9.1.conf文件,添加/usr/local/ssl/lib
- sudo ldconfig
二、安装Python3.7
- 配置环境变量
export LDFLAGS=" -L/usr/local/ssl/lib"
export CPPFLAGS=" -I/usr/local/ssl/include"
export PKG_CONFIG_PATH="/usr/local/ssl/lib/pkgconfig"
- 解压python安装包,执行configure文件:
./configure --enable-shared
查看ssl配置是否正常
- make
- sudo make install
- 验证ssl模块是否安装成功
- /usr/local/bin/python3.7
三、其他错误
- 编译ssl模块失败
解决办法:
进入libressl编译目录libressl-2.9.1
sudo cp ssl/.libs/libssl.so.47.0.5 /lib/x86_64-linux-gnu/
sudo cp crypto/.libs/libcrypto.so.45.0.4 /lib/x86_64-linux-gnu/
sudo ln -s /lib/x86_64-linux-gnu/libssl.so.47.0.5 /lib/x86_64-linux-gnu/libssl.so.47
sudo ln -s /lib/x86_64-linux-gnu/libcrypto.so.45.0.4 /lib/x86_64-linux-gnu/libcrypto.so.45
重新编译
- 编译_ctypes模块失败
解决方法: sudo apt-get install libffi-dev , 然后重新编译