在 Ubuntu 22.04 上安装 Python 3.9(多版本适用)

前言

上周(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 步骤并不复杂,但很多细节都隐藏着 “坑”,在后期使用开发时可能造成很大的麻烦。建议读者仔细阅读博客原文全文后再开始逐步操作。

安装依赖

更新系统软件

在正式开始之前,建议首先检查系统软件是否均为最新,并更新到最新版本。

打开一个终端,输入以下命令:

# 刷新软件包目录
sudo apt update
# 列出当前可用的更新
sudo apt list --upgradable
# 如上一步提示有可以更新的项目,则执行更新
sudo apt upgrade

安装 GCC 编译器

打开一个终端,使用 apt 安装 GCC 编译器:

# 安装 GCC 编译器
sudo apt install gcc

# 检查安装是否成功
gcc -v
# 若显示出 GCC 版本则成功

若正常显示 GCC 版本,则安装成功

安装其他依赖

# 刷新软件包目录
sudo apt update
# 安装依赖
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libbz2-dev liblzma-dev sqlite3 libsqlite3-dev tk-dev uuid-dev libgdbm-compat-dev

注意,Python 的部分功能依赖于对应的库(如 OpenSSL、SQLite3、LZMA 等),如果在编译时未能找到这些库,仍然可能完成编译。此时的 Python 解释器看似可以工作,但在需要使用特定功能时就会出问题。例如 OpenSSL 出现问题会导致无法正常使用 pip。故建议按本节提示安装所有可选依赖项,并在下一节编译时仔细检查有无报错信息。

编译与安装

下载源代码

Python 官网下载界面下载 Python 3.9 的源代码,此处使用目前最新的 3.9.12。

下载源代码

亦可通过 wget 下载:

# 下载 Python 3.9.12
sudo wget https://www.python.org/ftp/python/3.9.12/Python-3.9.12.tar.xz
# 下载其他版本只需替换版本号数字

解压并进入该目录,后续的所有命令均在该目录中执行:

# 解压
tar -xf Python-3.9.12.tar.xz
# 进入该目录
cd Python-3.9.12/

配置

# 检查依赖与配置编译
sudo ./configure --enable-optimizations --with-lto --enable-shared

此处使用了三个可选配置项,含义如下:

  • --enable-optimizations:用 PROFILE_TASK 启用以配置文件主导的优化(PGO)
  • --with-lto:在编译过程中启用链接时间优化(LTO)
  • --enable-shared:启用共享 Python 库 libpython 的编译

更多可用配置项的信息,请参阅 Python 官方文档

configure

经过一系列检查无误之后,会自动生成 Makefile,即可进行下一步的编译了。

编译

完成配置,生成 Makefile 后,就可以开始编译了。编译耗时较长,可以使用 -j 选项指定参与编译的 CPU 核心数,例如此机器为 6 核 CPU:

# 编译,-j 后面的数字为参与编译的CPU核心数,根据个人机器配置调整
sudo make -j 6

编译结束后,注意仔细查看一下输出,检查可能存在的错误:

# 一种可能出现的问题:
$ sudo make
# ......省略部分输出......
Python build finished successfully!
The necessary bits to build these optional modules were not found:
_dbm                  _tkinter              _uuid              
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

如果出现类似如上的警告,说明编译时有部分软件包不可用,导致编译出的 Python 有部分可选模块不可用。检查上一节中提到的依赖是否都已安装,或求助于网络搜索引擎,安装对应软件包后再次编译即可。

安装

# 安装二进制文件
sudo make altinstall

在 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/ 目录下即可:

# 找到 libpython 的位置
$ whereis libpython3.9.so.1.0
libpython3.9.so.1: /usr/local/lib/libpython3.9.so.1.0
# 在 /usr/lib/ 下创建 libpython 的符号链接
$ sudo ln -s /usr/local/lib/libpython3.9.so.1.0 /usr/lib/

使用 Python 3.9

完成安装后,Python 3.9 会与系统原有的 Python 3.10 共存。由于 Ubuntu 系统、安装的其他软件等很可能会依赖于系统原有的 3.10,所以不要移除原有 Python 环境,也不要对 python3 等命令进行修改。

命令行使用

直接在命令行使用 python3.9 命令即可调用新安装的解释器:

# 在命令行使用 Python 交互式解释器
$ python3.9
Python 3.9.12 (main, Apr 22 2022, 18:58:57) 
[GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

# 查看该命令所在位置
$ which python3.9
/usr/local/bin/python3.9

类似的,使用 Python 3.9 的 pip 的命令为 pip3.9

# 查看 pip3.9 版本
$ pip3.9 -V
pip 22.0.4 from /usr/local/lib/python3.9/site-packages/pip (python 3.9)

PyCharm 中使用

在 PyCharm 中简单设置后,就可以使用新安装的解释器了。

首先打开 PyCharm 设置,找到 “Python 解释器” 一项,点击下拉菜单——全部显示:

设置 Python 解释器

点击左上角的 + ,添加新的解释器(此处在另一台机器上截图,故列表中出现一些原有的解释器环境,读者忽略即可):

添加新的解释器

选择添加 “系统解释器”,点击后面的 ... 以浏览选择解释器路径:

添加系统解释器

编译安装,解释器可执行文件默认路径为 /usr/local/bin/python3.9,或者可以返回上一节检查命令 python3.9 的位置。在此处将完整路径粘贴进编辑框即可:

选择 Python 解释器

点击确定,即可正常使用新安装的解释器了:

已添加新的系统解释器

  • 27
    点赞
  • 185
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
Ubuntu 22.04上,你可以使用apt来安装Python 3.9。首先,你需要更新apt软件包列表,然后使用以下命令安装Python 3.9: ``` sudo apt update sudo apt install python3.9 ``` 安装完成后,你可以使用以下命令来验证Python 3.9安装: ``` python3.9 -V ``` 这将显示Python 3.9版本信息。请注意,这种方法安装的是系统级的Python 3.9,如果你需要在项目中使用不同的Python版本,你可以考虑使用虚拟环境(venv)来管理不同的Python环境。你可以参考相关文档来了解更多关于venv的信息。如果你需要安装一些特殊的pip包,如fastecdsa等,你可能需要安装Python 3.9的开发工具。你可以使用以下命令来安装python3.9-dev包: ``` sudo apt install python3.9-dev ``` 这个包会安装Python 3.9的开发工具,对于需要编译安装的库来说是必要的。希望对你有帮助! #### 引用[.reference_title] - *1* [Ubuntu 22.04 安装python3.9](https://blog.csdn.net/weixin_38111667/article/details/125793376)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Ubuntu Python版本安装](https://blog.csdn.net/WongSSH/article/details/130166679)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值