• 正文
  • 相关推荐
申请入驻 产业图谱

AI | Ubuntu 26.04 源码编译 Python 3.14.6:从依赖到多版本管理

09/07 07:50
120
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

感谢各位看友来访,更多最新技术专栏文章尽在作者『 全栈工程师修炼指南』星球,加入一起学习交流吧!

4.Python 环境安装

描述:说到机器学习,人工智能,深度学习不免会提到Python这一门编程语言(人生苦短,及时Python),Python是一门解释型、面向对象、动态数据类型的高级程序设计语言,使用Python可以非常便利的处理各种数据。

由于在安装 Ubuntu 26.04 LTS Server 版本时选择了最小安装,缺省是安装了 Python 3.14.4 版本,下面作者将实践编译安装最新 3.14.6 稳定版本的 Python 并利用update-alternatives 进行多版本环境切换。

操作步骤

步骤 01.先检查系统软件是否均为最新,并更新到最新版本,并安装后续编译安装所需的依赖,注意:此处作者已排除Kernel进行自动升级。

# 刷新软件包目录
sudo apt update

# 列出当前可用的更新
sudo apt list --upgradable

# 如上一步提示有可以更新的项目,则执行更新
sudo apt upgrade

# 安装依赖
sudo apt sudo apt install libnspr4-dev libssl3t64=3.5.5-1ubuntu3.3
sudo apt install build-essential zlib1g-dev libncurses-dev libgdbm-dev libnss3-dev libreadline-dev libffi-dev libbz2-dev liblzma-dev sqlite3 libsqlite3-dev tk-dev uuid-dev libgdbm-compat-dev

温馨提示:若在安装时提示如下依赖错误信息,请参考作者提供的方法进行解决。

# 错误信息
无法满足的依赖关系:
 libnss3-dev : Depends: libnspr4-dev (>= 4.6.6-1) 但是它将不会被安装
 libssl-dev : Depends: libssl3t64 (= 3.5.5-1ubuntu3.3) 但是 3.5.5-1ubuntu3.2 正要被安装
 tk-dev : Depends: tk8.6-dev (>= 8.6.16-1~) 但是它将不会被安装
          Depends: tk 但是它将不会被安装
          Depends: tcl-dev 但是它将不会被安装
Error: Unable to satisfy dependencies. Reached two conflicting assignments:
   1. libssl-dev:amd64=3.5.5-1ubuntu3.3 is selected for install
   2. libssl-dev:amd64=3.5.5-1ubuntu3.3 Depends libssl3t64 (= 3.5.5-1ubuntu3.3)
      but none of the choices are installable:
      - libssl3t64:amd64=3.5.5-1ubuntu3.3 is not selected for install

# 进一步排查 
$ apt-cache policy libssl3t64
libssl3t64:
  已安装: 3.5.5-1ubuntu3.2
  候选:  3.5.5-1ubuntu3.2
  版本列表:
     3.5.5-1ubuntu3.3 500
        500 https://mirrors.tuna.tsinghua.edu.cn/ubuntu resolute-updates/main amd64 Packages
        500 https://mirrors.tuna.tsinghua.edu.cn/ubuntu resolute-security/main amd64 Packages
 *** 3.5.5-1ubuntu3.2 600
        600 /var/lib/dpkg/status
     3.5.5-1ubuntu3 500
        500 https://mirrors.tuna.tsinghua.edu.cn/ubuntu resolute/main amd64 Packages

# 问题分析
从输出可以看到:
已安装版本:3.5.5-1ubuntu3.2(通过 /var/lib/dpkg/status 标记为 600,说明是被手动锁定或固定了)
可用版本:3.5.5-1ubuntu3.3(在 updates 和 security 仓库中)
依赖要求:libssl-dev 需要 libssl3t64=3.5.5-1ubuntu3.3
核心矛盾:你的系统将 libssl3t64 锁定在了 3.5.5-1ubuntu3.2,阻止它升级到 3.5.5-1ubuntu3.3,但 libssl-dev 又要求必须用 3.5.5-1ubuntu3.3 版本。

# 解决办法
# 检查包是否被标记为保持(hold)
sudo apt-mark showhold | grep libssl3t64
# 如果显示被 hold,取消保持
sudo apt-mark unhold libssl3t64
# 如果上面没有 hold,可能是 /etc/apt/preferences 或 /etc/apt/preferences.d/ 中的 pin 策略固定了版本:
# 然后升级到 3.5.5-1ubuntu3.3
sudo apt update
sudo apt install libssl3t64=3.5.5-1ubuntu3.3

步骤 02.访问Python官网(www.python.org)下载Python源码包,目前最新稳定版本为3.14.16  26年6月30日。

# 源码下载
wget https://www.python.org/ftp/python/3.14.6/Python-3.14.6.tar.xz

# 解压 xz
sudo xz -d Python-3.14.6.tar.xz

# 解压 tar 到指定目录
tar -xf Python-3.14.6.tar -C /usr/local/src/

温馨提示:若网络环境不佳,可能下载较慢,建议华为的镜像站下载,链接直达 mirrors.huaweicloud.com/python ,找到需要下载的版本目录下载即可.

步骤 03.查看并进入到 Python 3.14.6 源码目录进行编译安装。

# 查看&进入目录
cd /usr/local/src/Python-3.14.6
$ pwd
/usr/local/src/Python-3.14.6
$ ls
Android  Doc      Include       LICENSE  Mac              Misc     Objects  PCbuild  Platforms  Python      Tools       config.guess  configure     iOS         pyconfig.h.in
Apple    Grammar  InternalDocs  Lib      Makefile.pre.in  Modules  PC       Parser   Programs   README.rst  aclocal.m4  config.sub    configure.ac  install-sh

# 特别注意:中途若发生错误,需要重新编译需要在源码目录中执行(如果有)
# make clean

# 检查依赖与配置编译
mkdir /opt/python3
./configure 
    --prefix=/opt/python3 
    --enable-optimizations 
    --with-lto 
    --with-openssl=/usr 
    --enable-loadable-sqlite-extensions 
    --enable-ipv6 
    --enable-shared 
    --enable-big-digits=30 
    LDFLAGS="-Wl,-rpath,/opt/python3/lib"

# 编译参数:
# 更多可用配置项的信息,请参阅 Python 官方文档。
# 注意:这里作者使用 prefix 参数指定默认安装路径,读者可根据自身需要配置,例如使用 –enable-shared:启用共享 Python 库 libpython 的编译,但若自定义 --prefix 非源码目录则会无法索引库模块。

参数说明:

参数 作用
--prefix=/opt/python3 指定安装目录,所有文件会安装到 ‎/opt/python3 下
--enable-optimizations 启用 PGO(Profile Guided Optimization),提升 Python 运行时性能约 10-15%。编译时间会变长,但很值得。
--with-lto 启用 LTO(Link Time Optimization),进一步优化性能,与 ‎--enable-optimizations 配合效果更好。
--with-openssl=/usr 显式指定 OpenSSL 路径,确保 ‎_ssl 模块被正确编译。因为你的系统 OpenSSL 在 ‎/usr,这个参数强制 configure 去那里找。
--enable-loadable-sqlite-extensions 启用 SQLite 的可加载扩展支持,机器学习的某些数据预处理库可能需要。
--enable-ipv6 启用 IPv6 支持,现代化网络的标配。
--enable-shared 编译生成共享库 ‎libpython3.14.so,方便其他 C/C++ 程序嵌入 Python,也便于某些依赖 Python 库的软件调用。
--enable-big-digits=30 优化 Python 大整数运算的性能,机器学习中处理大数据集时有用。
LDFLAGS="-Wl,-rpath,/opt/python3/lib" 设置运行时库搜索路径,确保编译后的 Python 能找到自己目录下的共享库,避免 "library not found" 错误。
# 编译,-j 后面的数字为参与编译的CPU核心数,根据个人机器配置调整 
$ sudo make -j $(nproc)

# 生成二进制文件并安装
$ sudo make altinstall 

Creating directory /opt/python3/share/man
Creating directory /opt/python3/share/man/man1
.......
Looking in links: /tmp/tmpqqp18h3u
Processing /tmp/tmpqqp18h3u/pip-26.1.2-py3-none-any.whl
Installing collected packages: pip
  WARNING: The script pip3.14 is installed in '/opt/python3/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed pip-26.1.2

步骤 04.安装完毕后验证版本,为了方便再创建 python 可执行软连接。

# 创建软连接
ln -s /opt/python3/bin/python3.14 /usr/bin/python

# 查看版本
[root@aidev ~ 10.20.172.245 11:03]# python --version
Python 3.14.4
[root@aidev ~ 10.20.172.245 11:03]# python
Python 3.14.4 (main, Jun 18 2026, 14:25:02) [GCC 15.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello World! Python")
Hello World! Python
>>>

温馨提示:可将编译安装好的python版本打包,以便可以上传到其他服务器上直接开箱使用,但是需注意,如果打包的时候,已经安装了第三方库,那么其他服务器上也可以直接使用安装好的库

步骤 05.若你的 Ubuntu 26.04 LTS 安装了多个 Python 脚本,可使用update-alternatives 进行多版本环境切换,或者使用 Miniconda3 (推荐)切换不同的 Python 版本以及提供独立的虚拟环境,后续会介绍到这里简单了解即可。

# 以 3.12.4 版本为,演示切换
# 每条命令末尾的数字(即 1、2、3 等)表示该版本的优先级。数值越大,优先级越高。在上图的示例中,Python 3.14.6 的优先级最高(2),而 Python 3.14.4 的优先级最低(1)。
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.14 1
  # update-alternatives: 使用 /usr/bin/python3.14 来在自动模式中提供 /usr/bin/python (python)
sudo update-alternatives --install /usr/bin/python python /opt/python3/bin/python3.14 2
  # update-alternatives: 使用 /opt/python3/bin/python3.14 来在自动模式中提供 /usr/bin/python (python)

# 查看Python多版本
sudo update-alternatives --list python
	# /opt/python3/bin/python3.14
	# /usr/bin/python3.14

# 切换 Python 为最新安装的 3.14.4 版本
sudo update-alternatives --config python
# 有 2 个候选项可用于替换 python (提供 /usr/bin/python)。
# 选择       路径                       优先级  状态
------------------------------------------------------------
#  0            /opt/python3/bin/python3.14   2         自动模式
#  1            /opt/python3/bin/python3.14   2         手动模式
#  2            /usr/bin/python3.14           1         手动模式
# 要维持当前值[*]请按<回车键>,或者键入选择的编号: 2
# update-alternatives: 使用 /usr/bin/python3.14 来在手动模式中提供 /usr/bin/python (python)

# 查看当前python版本,可以看到已经切换到 3.14.4
ls -alh /usr/bin/python
  # lrwxrwxrwx 1 root root 24 Jun 18 22:25 /usr/bin/python -> /etc/alternatives/python
python --version
  # Python 3.14.4

# 移除添加的Python版本
sudo update-alternatives --remove python /usr/local/bin/python3.12.4

步骤 06.在之前执行 sudo make altinstall 时已经自动安装了 pip,但未创建软连接,并且有可能不是最新版本,可执行下述命令进行安装升级。

# 安装 pip (未安装的情况下执行)
# apt install python3-pip

# 切换到最新版本
python --version
  # Python 3.14.6

# 查看系统包路径
/opt/python3/bin/python3.14 -c "import sys; print(sys.path)"
  # ['', '/opt/python3/lib/python314.zip', '/opt/python3/lib/python3.14', '/opt/python3/lib/python3.14/lib-dynload', '/opt/python3/lib/python3.14/site-packages']

# 更新 pip 版本
python -m pip install --upgrade pip
  # Successfully installed pip-26.2
  # WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning. (暂时不用管它,意思是建议使用虚拟环境来管理不同项目的依赖包)

# 查看版本
[root@aidev ~ 10.20.172.245 14:46]# pip --version
pip 26.2 from /opt/python3/lib/python3.14/site-packages/pip (python 3.14)
[root@aidev ~ 10.20.172.245 14:48]# pip3 --version
pip 26.2 from /opt/python3/lib/python3.14/site-packages/pip (python 3.14)

特别注意:若使用 update-alternatives 切换不同的 python 版本,pip 工具也需进行切换。

步骤 07.以安装jupyter (jupyter.org/install) 为例, 使用以下命令安装经典的 Jupyter Notebook:

# 使用清华源
pip install jupyter -i https://pypi.tuna.tsinghua.edu.cn/simple/
jupyter notebook

温馨提示:如果你是其他Python开发项目,可以先则先上 cd 到项目中存在 requirements 的文件路径,使用下述命令即可安装项目依赖

pip3 install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
# --trusted-host mirrors.aliyun.com 为信任国外站点

温馨提示:考虑到国内网络环境,pip 源建议使用国内镜像源,如清华源,华为源等,这里附上常用镜像源。

清华大学:https://pypi.tuna.tsinghua.edu.cn/simple/
阿里云: http://mirrors.aliyun.com/pypi/simple/
中国科学技术大学:http://pypi.mirrors.ustc.edu.cn/simple/
华中科技大学:http://pypi.hustunique.com/
豆瓣源:http://pypi.douban.com/simple/
腾讯源:http://mirrors.cloud.tencent.com/pypi/simple
华为镜像源:https://repo.huaweicloud.com/repository/pypi/simple/

本文详细介绍了如何在 Ubuntu 26.04 上编译安装 Python 3.14.6 ,以及如何安装和升级 Pip,以及如何切换默认 Python 版本,这些技巧有助于满足 Python 用户和开发者的多样化项目需求。

温馨提示:若文章代码块中存在乱码或不能复制,请联系作者,也可通过文末的阅读原文链接,加入知识星球中阅读,原文链接:https://articles.zsxq.com/id_8no2nl5cm9dh.html

 

学习:作者知识星球

『 全栈工程师修炼指南』星球,主要涉及全栈工程师(Full Stack Development)实践文章,持续更新包括但不限于企业SecDevOps和网络安全等保合规、安全渗透测试、编程开发、云原生(Cloud Native)、物联网工业控制(IOT)、人工智能Ai,从业书籍笔记,人生职场认识等方面资料或文章。

相关推荐