解决 Python 3.8+ 遇到的 OpenSSL 版本不兼容的问题
在安装 Python3.8 时可能会遇到与系统自带 OpenSSL 版本不兼容的问题。Python3.8 需要的 OpenSSL 版本为 1.0.2
或 1.1.x
。如果系统中默认的 OpenSSL 版本低于需求(通常是 OpenSSL 1.0.1
),会导致如下错误:
Could not build the ssl module!
Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host().
查询当前 OpenSSL 版本
openssl version
如果版本低于 Python3.8 的需求,就需要升级 OpenSSL。
升级 OpenSSL 步骤
1. 下载新版 OpenSSL
前往 OpenSSL 官方网站 下载需要的版本。以 OpenSSL 1.1.1n 为例:
wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1n.tar.gz
2. 解压安装包
tar -xvzf openssl-1.1.1n.tar.gz
3. 编译安装
cd openssl-1.1.1n
./config --prefix=/usr/local/openssl no-zlib # 新版openssl将安装在/usr/local/openssl目录下
make
make install
新版 OpenSSL 将安装在 /usr/local/openssl
目录下。
4. 备份原系统 OpenSSL
升级前,备份原系统自带的低版本 OpenSSL 以便回滚:
mv /usr/bin/openssl /usr/bin/openssl_bak
mv /usr/include/openssl/ /usr/include/openssl_bak
5. 配置新版 OpenSSL
为新版 OpenSSL 创建软连接:
# 将安装好的openssl的openssl命令软连到/usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
# 软链到升级后的libssl.so
ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/local/lib64/libssl.so
# 将安装好的openssl命令软连到/usr/bin/openssl
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
6. 修改系统配置
# 写入openssl库文件的搜索路径
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf # 需要root权限
# 使修改后的/etc/ld.so.conf生效
ldconfig -v
7. 验证安装结果
openssl version
输出应类似于:
OpenSSL 1.1.1n 15 Mar 2022
8. 追加环境变量
vim ~/.bashrc
export LDFLAGS="-L/usr/local/openssl/lib"
export CPPFLAGS="-I/usr/local/openssl/include"
export PKG_CONFIG_PATH="/usr/local/openssl/lib/pkgconfig"
source ~/.bashrc
升级完新版本的 OpenSSL 之后,需要对 Pyhton 3.8 进行重新编译并更新软连接才能继续使用 Python 3.8。
我要评论
文章归档
2024 年 12 月
2
2024 年 10 月
2
2024 年 09 月
2
2024 年 07 月
1
2024 年 06 月
1
2024 年 04 月
1
2024 年 03 月
1
2024 年 01 月
2
2023 年 11 月
2
2023 年 10 月
1
文章日历
2024 年 12 月 | ||||||
---|---|---|---|---|---|---|
日 | 一 | 二 | 三 | 四 | 五 | 六 |
01 | 02 | 03 | 04 | 05 | 06 | 07 |
08 | 09 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
30 | 31 | 01 | 02 | 03 | 04 | 05 |
文章标签
- Linux
- Go
- Yii
- 新浪
- CentOS
- PHP
- Git
- WSL
- Composer
- Mac
- 入职
- Bootstrap
- pyenv
- UCenter
- 厦门
- 出差
- 长沙
- 湖南卫视
- 微博
- Tengine
- YUI
- 泰国
- pecl
- 优化
- GitLab
- 迁移
- rootless
- 年会
- 生日
- Tengin
- RedHat
- Sphinx
- cygwin
- Windows
- Tmux
- Zsh
- 升级
- MySQL
- sql_mode
- Shadowsockets
- 面向对象
- HTTP
- 状态码
- grep
- unoconv
- PPT
- Nginx
- htpasswd
- golang
共 0 条评论