1. 前言
由于源码编译安装Python3.11.4遇到了openssl的问题(在没有安装高版本的openssl时,编译时会出现 Could not build the ssl module! Python requires a OpenSSL 1.1.1 or newer
,如果忽略它并安装python后,后面再安装 opencv-python
模块时出错 after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/opencv-python/
),特记录以下完整的安装过程。
2. 安装步骤
2.1. 环境依赖
安装必要的依赖以及环境配置可以提前避免很多问题
- 安装依赖
# 源码编译需要依赖的环境
yum -y groupinstall "Development tools"
yum install -y ncurses-devel gdbm-devel xz-devel sqlite-devel tk-devel uuid-devel readline-devel bzip2-devel libffi-devel
# 安装高版本openssl,系统的那个版本太低无法适配python3.11。pip安装模块时需要用到ssl
yum install -y openssl-devel openssl11 openssl11-devel
# 貌似与opencv相关
yum install mesa-libGL.x86_64
- 环境配置
vim /etc/profile
文件末尾添加以下配置项,指定openssl
#安装python3.11设置的
export CFLAGS=$(pkg-config --cflags openssl11)
export LDFLAGS=$(pkg-config --libs openssl11)
刷新
source /etc/profile
2.2. python3.11.4
- 下载源码包解压到指定目录
wget https://www.python.org/ftp/python/3.11.4/Python-3.11.4.tgz
tar -xvf Python-3.11.4.tgz -C /usr/local/src
- 修改Setup文件
cd /usr/local/src/Python-3.11.4
vim Modules/Setup
# 移除以下三项注释
- 编译安装
cd /usr/local/src/Python-3.11.4
# 指定安装目录,主要是为了防止与系统默认的版本相冲突
./configure --prefix=/usr/local/python3.11
# 编译,-j 后面的参数表示处理器核心数
make -j 2
# 安装,make altinstall不会影响系统的默认 Python 版本
make altinstall
- 验证是否成功启用ssl(输出版本信息即表示成功)
/usr/local/python3.11/bin/python3.11 -c 'import ssl; print(ssl.OPENSSL_VERSION)'
2.3. opencv-python模块
# 安装opencv模块并指定镜像地址
/usr/local/python3.11/bin/python3.11 -m pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple