CentOS7 + pyenv 安装 Python 3.11 完整指南)

CentOS7 + pyenv 安装 Python 3.11 完整指南

适用环境:

  • 系统:CentOS Linux 7.9.2009
  • 架构:x86_64
  • Shell:zsh
  • 权限:root
  • pyenv:已安装(2.6.27)
  • OpenSSL:1.0.2k(默认版本过旧,需要处理)

一、为什么 CentOS7 安装 Python3.11 会失败

CentOS7 默认 OpenSSL 为:

bash 复制代码
OpenSSL 1.0.2k-fips

但 Python 3.11 推荐使用:

  • OpenSSL 1.1.1+

否则容易出现:

  • ssl 模块缺失
  • pip 无法使用 HTTPS
  • _ssl module not available
  • pyenv install 编译失败

所以必须先升级 OpenSSL 环境。


二、安装编译依赖

先安装所有必要依赖:

bash 复制代码
yum groupinstall -y "Development Tools"

yum install -y \
gcc \
gcc-c++ \
make \
zlib-devel \
bzip2-devel \
readline-devel \
sqlite-devel \
libffi-devel \
xz-devel \
tk-devel \
gdbm-devel \
ncurses-devel \
libuuid-devel \
wget \
curl \
git

三、安装新版 OpenSSL(推荐 OpenSSL 1.1.1)

建议不要替换系统 OpenSSL。

直接安装到独立目录即可。

1)进入源码目录

bash 复制代码
cd /usr/local/src

2)下载 OpenSSL

bash 复制代码
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz

3)解压

bash 复制代码
tar -zxvf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w

4)编译安装

bash 复制代码
./config \
--prefix=/usr/local/openssl-1.1.1 \
--openssldir=/usr/local/openssl-1.1.1

make -j$(nproc)
make install

5)确认安装成功

bash 复制代码
/usr/local/openssl-1.1.1/bin/openssl version

应该看到:

bash 复制代码
OpenSSL 1.1.1w

四、配置 pyenv 使用新版 OpenSSL

这一步非常关键。

否则 pyenv 编译 Python 3.11 时仍会使用系统旧 OpenSSL。

编辑 zsh 配置:

bash 复制代码
vim ~/.zshrc

追加:

bash 复制代码
export CPPFLAGS="-I/usr/local/openssl-1.1.1/include"
export LDFLAGS="-L/usr/local/openssl-1.1.1/lib"
export PKG_CONFIG_PATH="/usr/local/openssl-1.1.1/lib/pkgconfig"
export LD_LIBRARY_PATH="/usr/local/openssl-1.1.1/lib"
export PATH="/usr/local/openssl-1.1.1/bin:$PATH"

刷新环境:

bash 复制代码
source ~/.zshrc

五、注册 OpenSSL 动态库(CentOS7 必做)

CentOS7 上仅设置环境变量还不够。

必须把 OpenSSL 1.1.1 的动态库注册到系统链接器。

执行:

bash 复制代码
echo "/usr/local/openssl-1.1.1/lib" > /etc/ld.so.conf.d/openssl-1.1.1.conf
ldconfig

验证:

bash 复制代码
ldconfig -p | grep ssl

应该能看到:

bash 复制代码
/usr/local/openssl-1.1.1/lib/libssl.so.1.1

否则 Python 编译时容易出现:

bash 复制代码
ModuleNotFoundError: No module named '_ssl'

六、安装 Python 3.11

查看可安装版本:

bash 复制代码
pyenv install --list | grep 3.11

建议安装稳定版:

bash 复制代码
pyenv uninstall -f 3.11.9

export PYTHON_CONFIGURE_OPTS="--with-openssl=/usr/local/openssl-1.1.1"

MAKE_OPTS="-j2" pyenv install -v 3.11.9

说明:

  • --with-openssl:强制 Python 使用 OpenSSL 1.1.1
  • -j2:适合 2 CPU 服务器
  • -v:显示详细编译日志,方便排查问题

编译时间:

  • 普通服务器:5~20 分钟
  • 云服务器:10~30 分钟

七、设置 Python3.11 为默认版本

查看可安装版本:

bash 复制代码
pyenv install --list | grep 3.11

建议安装稳定版:

bash 复制代码
pyenv install 3.11.9

如果你机器 CPU 较高:

bash 复制代码
MAKE_OPTS="-j8" pyenv install 3.11.9

编译时间:

  • 普通服务器:5~20 分钟
  • 云服务器:10~30 分钟

六、设置 Python3.11 为默认版本

全局设置:

bash 复制代码
pyenv global 3.11.9

检查:

bash 复制代码
python --version
python3 --version

应该输出:

bash 复制代码
Python 3.11.9

七、验证 SSL 是否正常

非常重要。

执行:

bash 复制代码
python

进入 Python 后:

python 复制代码
import ssl
print(ssl.OPENSSL_VERSION)

正确结果应该类似:

python 复制代码
OpenSSL 1.1.1w

如果这里仍然显示 1.0.2k 或报错:

说明 pyenv 编译时仍用了系统 OpenSSL。


八、安装 pip 与常用工具

升级 pip:

bash 复制代码
pip install --upgrade pip setuptools wheel

验证:

bash 复制代码
pip -V

九、推荐 pyenv 初始化(zsh)

编辑:

bash 复制代码
vim ~/.zshrc

加入:

bash 复制代码
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"

eval "$(pyenv init -)"

刷新:

bash 复制代码
source ~/.zshrc

十、常见报错


报错:

bash 复制代码
ModuleNotFoundError: No module named '_ssl'

原因:

  • OpenSSL 版本过低
  • pyenv 编译时没指向新版 OpenSSL

解决:

删除重新安装:

bash 复制代码
pyenv uninstall 3.11.9
pyenv install 3.11.9

报错:

bash 复制代码
zipimport.ZipImportError

原因:

  • 编译依赖不完整

重新安装依赖后重新编译。


报错:

bash 复制代码
BUILD FAILED

查看日志:

bash 复制代码
cat /tmp/python-build.*.log

最常见问题:

  • openssl
  • zlib
  • gcc 版本

十一、推荐安装方式(你当前环境)

你目前环境最稳的方案是:

  1. 保持系统 OpenSSL 不变
  2. 单独安装 OpenSSL 1.1.1
  3. pyenv 指向新 OpenSSL
  4. 安装 Python 3.11.9

这是 CentOS7 上最稳定的方案。


十二、推荐最终目录结构

bash 复制代码
/usr/local/openssl-1.1.1
~/.pyenv
~/.pyenv/versions/3.11.9

十三、最终验证

执行:

bash 复制代码
python --version
which python
python -c "import ssl; print(ssl.OPENSSL_VERSION)"
pip -V

理想输出:

bash 复制代码
Python 3.11.9
OpenSSL 1.1.1w

说明安装完成。

相关推荐
OCR_1337162127524 分钟前
金融智能化落地:护照核验技术在银行场景的应用与实践
大数据·人工智能·金融
JAVA面经实录91728 分钟前
HBase 知识点梳理(文档型 NoSQL)
大数据·数据库·nosql数据库·hbase
2501_9336707931 分钟前
大数据专业大类招生模式
大数据
SAP上海工博云署32 分钟前
生产采购财务一体化ERP选型指南(中小制造/工贸企业适用)
大数据·人工智能·信息可视化·制造·信息与通信
梦想三三36 分钟前
矿物智能识别项目实战(一):从零开始清洗工业矿物数据
大数据·人工智能·数据挖掘
2401_832298101 小时前
适配工业互联网场景,OpenClaw落地工厂智能运维,加速工业4.0无人化转型
大数据·人工智能
标书畅畅行1 小时前
深度解析钛投标AI标书工具:全流程企业级AI投标解决方案,重构投标数字化生产力
大数据·数据库·人工智能
Hello:CodeWorld1 小时前
AI Agent:从核心原理、架构框架到工程实战,大模型时代的自主智能革命
大数据·人工智能·python·架构
DolphinScheduler社区1 小时前
Apache DolphinScheduler 3.4.2 正式发布!新增 Amazon EMR Serverless 插件,增强监控与补数据能力
大数据·云原生·serverless·apache·海豚调度·版本发版
ITxiaobing20231 小时前
Neel Somani 解读加州 AB 205 能源可靠性框架的长期市场影响
大数据·人工智能·能源