Centos7 编译安装 Python 3.9.18

555 阅读1分钟

Centos7 官方库可以安装 Python 3.6.8

如果要安装 3.9.18,需要自行编译

过程中还是有点小坑的,记录一下

  • 以下命令都是在 root 用户下操作
  • 安装命令没有加 -y 参数,都需要手动确认,这样更明白自己在干啥
  1. 安装 Extra Packages for Enterprise Linux (EPEL) 软件包
yum install epel-release
  1. 安装编译需要的包
yum install gcc make
  1. 安装功能依赖包
yum install zlib-devel libffi-devel openssl11-devel bzip2-devel sqlite-devel ncurses-devel tk-devel

这些包的作用可以问下大语言模型 AI,会得到很好的回答

Python3.9.18 编译需要 openssl1.1 版本,但是 Centos7 安装的是 openssl1.0 版本。网上很多教程编译 openssl 相关的都会失败,导致后续开发使用相关功能时会失败。

  1. 下载 Python 3.9.18 源代码:
wget https://www.python.org/ftp/python/3.9.18/Python-3.9.18.tgz

使用 wget 命令下载 Python 3.9.18 的源代码压缩包。

yum install wget 来获取

  1. 解压源代码压缩包:
tar -xzvf Python-3.9.18.tgz

使用 tar 命令解压源代码压缩包。

  1. 进入解压后的目录:
cd Python-3.9.18
  1. 声明全局变量:
export CPPFLAGS="$(pkg-config --cflags openssl11)"
export LDFLAGS="$(pkg-config --libs openssl11)"

这样在配置编译时,就会使用 openssl11,而不是默认的 openssl

  1. 配置编译
./configure

一些文章会带上 --enable-optimizations,这需要 gcc 8 版本以上的支持,centos7 咱们就不折腾升级 gcc 了,可能会引发其他兼容问题

  1. 开始编译并安装:
make altinstall

使用 altinstall 不会影响系统原有的 python,从而不影响其他软件,保证系统正常运行

  1. 验证:
python3.9 -V

ok,主要点就是 openssl11altinstall

关键就是 Centos7 系统比较老了,使用 Centos8 或以上的就不会有这些麻烦了

下回见~