感谢各位看友来访,更多最新技术专栏文章尽在作者『 全栈工程师修炼指南』星球,加入一起学习交流吧!
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,从业书籍笔记,人生职场认识等方面资料或文章。
120