motivation:

服务器系统为:ubuntu20.04

查看系统中自带的python版本,可以发现系统自带的python3版本为python3.8。

因为我们需要在服务器部署的项目依赖python版本>=3.9,与Python3.8不兼容,所以需要安装python3.9。

本文详细记录在Ubuntu20.04(其他版本步骤也一样)上编译安装指定版本Python解释器的过程和可能遇到的问题,及多个Python版本并存的使用方法。

安装依赖

初次安装的时候,没有执行这个步骤,后续踩了比较多的坑,参考网上的文章后执行此步骤可以解决大部分的问题。

更新系统软件

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

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

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

image-20240111170901524

安装GCC编译器

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

1
2
3
4
5
6
# 安装 GCC 编译器
sudo apt install gcc

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

安装其他依赖

1
2
3
4
# 刷新软件包目录
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。故建议按本节提示安装所有可选依赖项。

查看系统自带python3版本

在系统终端中输入:

1
ls -l /usr/bin | grep python

image-20240111165216118

可以看出使用系统的Python3指向版本python3.8

输入python3 –version可以查看详细版本信息

image-20240111165421131

下载安装python3.9

下载与解压

https://www.python.org/ftp/python/下找到我们想要安装的python3.9版本的tgz安装包

image-20240111165757616

在终端中通过wget命令下载我们选择的安装包

1
sudo wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz

解压安装包并进入目录(我这里选择解压到根目录下,读者可以自行选择解压路径)

1
2
sudo tar -zxvf Python-3.9.0.tgz -C ~
cd Python-3.8.5

配置

在Python-3.8.5目录下:

配置:

1
sudo ./configure

编译:

1
make

安装:

1
sudo make altinstall

这里使用应使用 altinstall 而不是 install

二者的一个重要区别在于,后者会创建符号链接,将 python3 等命令链接到正在安装的新版本 Python 3 上,这可能会破坏系统。更多信息请参阅当前目录下的 README.rst 文件。

使用

有的文章可能会在这里让你删除掉原有的python环境或者是修改python3命令指向新安装的python3.8环境,由于 Ubuntu 系统、安装的其他软件等很可能会依赖于系统原有的python环境等原因,都不要进行此类修改!!!

下面对安装完成的python环境进行测试

在命令行输入python3.9(注意不要分开),可以看到已经成功安装了。

image-20240111172737068

如果要在python3.9环境下安装库的话,使用pip3.9即可

image-20240111173117603

后续如果想用python3.9环境来执行代码的话,在前面加上python3.9即可

image-20240111173227176

参考文章