在 Ubuntu 22.04 上安装 Python 3.9
本文最后更新于 2023年2月10日 早上
前言
昨日(2022年4月21日),Ubuntu 发布了最新的 LTS 版本—— 22.04 LTS (Jammy Jellyfish)。然而该版本默认的 Python 3 版本为 Python 3.10,高于许多开发者正在使用的 3.9、3.8 甚至更早版本。特撰写本教程,记录从源代码编译安装 Python 3.9 的全过程,3.8 或其他版本同样适用。
从源代码编译安装 Python 步骤并不复杂,但很多细节都隐藏着 “坑”,在后期使用开发时可能造成很大的麻烦。建议读者仔细阅读全文后再开始逐步操作。
安装依赖
更新系统软件
在正式开始之前,建议首先检查系统软件是否均为最新,并更新到最新版本。
打开一个终端,输入以下命令:
1 |
|
安装 GCC 编译器
打开一个终端,使用 apt 安装 GCC 编译器:
1 |
|
安装其他依赖
1 |
|
注意,Python 的部分功能依赖于对应的库(如 OpenSSL、SQLite3、LZMA 等),如果在编译时未能找到这些库,仍然可能完成编译。此时的 Python 解释器看似可以工作,但在需要使用特定功能时就会出问题。例如 OpenSSL 出现问题会导致无法正常使用 pip。故建议按本节提示安装所有可选依赖项,并在下一节编译时仔细检查有无报错信息。
编译与安装
下载源代码
在 Python 官网下载界面下载 Python 3.9 的源代码,此处使用目前最新的 3.9.12。
亦可通过 wget
下载:
1 |
|
安全起见,对下载的压缩包进行 MD5 校验:
1 |
|
对已下载到本地的压缩包调用 md5sum
得到的结果与 Release 界面显示的相同,认为安全。(对安全性有更高要求的可以使用 GPG 验证)
解压并进入该目录,后续的所有命令均在该目录中执行:
1 |
|
配置
1 |
|
此处使用了三个可选配置项,含义如下:
--enable-optimizations
:用 PROFILE_TASK 启用以配置文件主导的优化(PGO)--with-lto
:在编译过程中启用链接时间优化(LTO)--enable-shared
:启用共享 Python 库libpython
的编译
更多可用配置项的信息,请参阅 Python 官方文档。
经过一系列检查无误之后,会自动生成 Makefile,即可进行下一步的编译了。
编译
完成配置,生成 Makefile 后,就可以开始编译了。编译耗时较长,可以使用 -j
选项指定参与编译的 CPU 核心数,例如此机器为 12 核 CPU:
1 |
|
编译结束后,注意仔细查看一下输出,检查可能存在的错误:
1 |
|
如果出现类似如上的警告,说明编译时有部分软件包不可用,导致编译出的 Python 有部分可选模块不可用。检查上一节中提到的依赖是否都已安装,或求助于网络搜索引擎,安装对应软件包后再次编译即可。
安装
1 |
|
在 Makefile 中有如下提示:
If you have a previous version of Python installed that you don’t want to overwrite, you can use “make altinstall” instead of “make install”.
故应使用 altinstall
而不是 install
。二者的一个重要区别在于,后者会创建符号链接,将 python3
等命令链接到正在安装的新版本 Python 3 上,这可能会破坏系统。更多信息请参阅当前目录下的 README.rst
文件。
链接动态库
由于编译配置中有 --enable-shared
的选项,故此时直接使用命令 python3.9
会提示无法找到 libpython3.9.so.1.0
的错误。只需找到该 so
文件,复制(或创建符号链接)到 /usr/lib/
目录下即可:
1 |
|
使用 Python 3.9
完成安装后,Python 3.9 会与系统原有的 Python 3.10 共存。由于 Ubuntu 系统、安装的其他软件等很可能会依赖于系统原有的 3.10,所以不要移除原有 Python 环境,也不要对 python3
等命令进行修改。
命令行使用
直接在命令行使用 python3.9
命令即可调用新安装的解释器:
1 |
|
类似的,使用 Python 3.9 的 pip
的命令为 pip3.9
1 |
|
PyCharm 中使用
在 PyCharm 中简单设置后,就可以使用新安装的解释器了。
首先打开 PyCharm 设置,找到 “Python 解释器” 一项,点击下拉菜单——全部显示:
点击左上角的 +
,添加新的解释器(此处在另一台机器上截图,故列表中出现一些原有的解释器环境,读者忽略即可):
选择添加 “系统解释器”,点击后面的 ...
以浏览选择解释器路径:
编译安装,解释器可执行文件默认路径为 /usr/local/bin/python3.9
,或者可以返回上一节检查命令 python3.9
的位置。在此处将完整路径粘贴进编辑框即可:
点击确定,即可正常使用新安装的解释器了: