适用环境:Kylin Linux Advanced Server V10(Halberd),x86_64 架构,RPM 包管理器(YUM)
Python 版本:3.11.15(可替换为其他 3.11.x 小版本)

1. 背景与麒麟系统版本说明

麒麟操作系统分为多个分支:

  • 桌面版:通常基于 Ubuntu/Debian,使用 apt 包管理器。
  • 服务器版(Advanced Server):基于 Red Hat/CentOS 体系,使用 yum/dnf 包管理器。

本文针对的是 Kylin Linux Advanced Server V10(Halberd),它是 RPM 系发行版,与 CentOS 7/8 高度兼容。如果你的麒麟系统是桌面版,请将 yum 替换为 apt,并调整依赖包名称(如 build-essentiallibssl-dev 等)。

确认你的系统类型

cat /etc/os-release
# 若看到 Kylin Linux Advanced Server,且 which yum 存在,则按本文操作。
[root@localhost ~]# cat /etc/os-release
NAME="Kylin Linux Advanced Server"
VERSION="V10 (Halberd)"
ID="kylin"
VERSION_ID="V10"
PRETTY_NAME="Kylin Linux Advanced Server V10 (Halberd)"
ANSI_COLOR="0;31"

2. 环境准备

2.1. 检查系统架构与现有 Python 版本

# 架构
uname -m               # 输出 x86_64
# 包管理器
which yum || which dnf # 输出 /usr/bin/yum
# GCC 版本(编译必需)
gcc --version          # 输出 7.3.0,满足 Python 3.11 要求(≥5.x)
# 现有 Python
python -V              # 系统自带 Python 2.7
python3 -V             # 系统自带 Python 3.7(不要覆盖它)

重要:系统自带的 Python 3.7 被 yum 等系统工具依赖,切勿直接覆盖或卸载。我们将通过 altinstall 实现多版本共存。

获取当前默认python安装情况

[root@localhost ~]# whereis python3
python3: /usr/bin/python3.7m /usr/bin/python3 /usr/bin/python3.7 /usr/bin/python3.7-config /usr/bin/python3.7m-config /usr/bin/python3.7m-x86_64-config /usr/lib/python3.7 /usr/lib64/python3.7 /usr/include/python3.7m

2.2. 安装编译依赖(核心库)

麒麟 RPM 源中不直接提供 Python 3.11 安装包,因此选择源码编译。首先安装必要的开发库:

sudo yum update -y
sudo yum install -y zlib-devel bzip2-devel openssl-devel sqlite-devel xz-devel libffi-devel

说明

  • openssl-devel:确保 Python 支持 HTTPS(pip 安装包必需)。
  • libffi-devel:用于 ctypes 模块。
  • 其他如 ncurses-develreadline-devel 在麒麟默认源中可能缺失,它们仅影响交互式终端的体验(上下键历史、补全),不参与核心编译,可忽略。

如果你希望拥有完整的交互式功能,可尝试替代包:

sudo yum install ncurses-libs readline-static   # 不一定成功,不影响编译

3. 下载安装Python 3.11

3.1. 下载并解压 Python 3.11 源码

前往 Python 官方下载页 或直接使用 wget 获取:

cd /home/hty/python   # 你的工作目录
wget https://www.python.org/ftp/python/3.11.15/Python-3.11.15.tgz
tar -xzvf Python-3.11.15.tgz
cd Python-3.11.15

如果服务器是离线状态,则通过客户端下载安装包,然后上传到服务器,我使用的工具如下。

在这里插入图片描述

3.2. 配置编译选项

./configure --prefix=/usr/local/python3.11 --enable-optimizations
  • --prefix:指定安装目录,方便卸载和管理。
  • --enable-optimizations:启用 PGO(性能优化),编译时间稍长但运行更快。

检查配置输出

  • 关注 checking whether the C compiler works... yeschecking for --enable-optimizations... yes 等关键项。
  • 大量 checking ... no 属于正常的跨平台探测,非错误,可忽略。

3.3. 编译与安装

# 利用多核加速编译(nproc 获取 CPU 核数)
make -j$(nproc)

# 重要:使用 altinstall 避免覆盖系统 python3
sudo make altinstall

安装后,Python 3.11 可执行文件位于 /usr/local/python3.11/bin/python3.11


六、验证安装

/usr/local/python3.11/bin/python3.11 --version
# Python 3.11.15

/usr/local/python3.11/bin/pip3.11 list
# pip 24.0, setuptools 79.0.1  (自动安装)

3.4. 创建软链接(可选)

为方便使用,建立全局命令链接:

sudo ln -s /usr/local/python3.11/bin/python3.11 /usr/bin/python3.11
sudo ln -s /usr/local/python3.11/bin/pip3.11 /usr/bin/pip3.11

注意:不要将 /usr/bin/python3 链接到新版本,以免破坏系统工具。


4. 安装第三方包(以 NumPy/SciPy 为例)

因内网环境或速度问题,可使用清华镜像源下载离线包或直接在线安装:
在这里插入图片描述

# 在线安装(使用镜像)
/usr/local/python3.11/bin/pip3.11 install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy scipy

# 离线安装(提前下载 whl 文件)
/usr/local/python3.11/bin/pip3.11 install numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
/usr/local/python3.11/bin/pip3.11 install scipy-1.15.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

下载离线安装包
https://pypi.tuna.tsinghua.edu.cn/simple/numpy/


5. 常见问题与解决方案

Q1:yum install python3.11 找不到包?

  • 原因:麒麟官方源未收录 Python 3.11。
  • 解决:采用本文的源码编译方式。

Q2:./configure 报错 curses.hreadline 找不到?

  • 原因:缺少 ncurses-devel / readline-devel
  • 影响:仅影响交互式体验(历史命令、补全)。
  • 解决:可忽略,或安装 rlwrap 弥补:
    sudo yum install rlwrap
    alias python3.11='rlwrap /usr/local/python3.11/bin/python3.11'
    

Q3:make 过程中报错 ssl 相关?

  • 原因openssl-devel 未安装或版本过低。
  • 解决:确认 sudo yum install openssl-devel 已执行。

Q4:pip 无法使用(SSL 错误)?

  • 原因:编译时未检测到 OpenSSL。
  • 解决:检查 /usr/local/python3.11/bin/python3.11 -c "import ssl; print(ssl.OPENSSL_VERSION)",若无输出则需重新编译并确保 openssl-devel 安装。

6. 总结

通过源码编译,我们成功在麒麟 V10(RPM 系)上安装了 Python 3.11,且不影响系统原生 Python 环境。此方法同样适用于 CentOS、Rocky Linux 等 RHEL 兼容发行版,只需调整依赖包名称即可。

若你的麒麟系统为 Debian 系(桌面版),请参照:

sudo apt update
sudo apt install -y build-essential libssl-dev libffi-dev python3-dev
# 后续源码编译步骤相同

参考资料

  • Python 官方源码:https://www.python.org/downloads/
  • 清华 PyPI 镜像:https://pypi.tuna.tsinghua.edu.cn/simple

最后验证:运行 python3.11 -c "print('Hello, Kylin!')",看到输出即安装成功!🎉


本教程根据实际环境(Kylin V10 Halberd)实测通过,如有疑问欢迎留言交流。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐