Debian/Linux安装最新Python版本及多版本环境管理

本文最后更新于 2 years ago,文中所描述的信息可能已发生改变。

Python 的环境管理确实烦,而且会出现版本之间不兼容的情况,所以有必要知道如何安装不同版本的 Python 并管理其环境.

本文系统环境为 Debian11, 虚拟环境工具使用的是 venv, 采用编译安装的方法. Python 版本为 3.11.6

安装

下载Python源码

去往 Python 官网 下载你想安装的版本的源码, 以目前最新的 Python3.11 为例

图 3

使用 wget 下载:

shell
wget https://www.python.org/ftp/python/3.11.6/Python-3.11.6.tar.xz

配置构建

下载完成后, 将其解压:

shell
tar -xf Python-3.11.6.tar.xz

安装必要的依赖软件:

shell
sudo apt update

sudo apt install build-essential zlib1g-dev libncurses5-dev \
libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev pkg-config \
libreadline-dev libffi-dev curl libbz2-dev curl libgdbm-dev \ 
lzma-dev uuid-dev libsqlite3-dev openssl tk8.6-dev -y

进入 Python 源码文件夹, 并配置

shell
cd Python-3.11.6
./configure --enable-optimizations --with-lto --prefix=/usr/local/python3.11

注意注意

configure 后的 --enable-optimizations --with-lto 两个参数是为了提高性能, 但它会使得 Python 编译过程变慢, 你可以选择不启用它们. 如果你遇到了问题, 可以尝试只开启 --enable-optimizations, 或者二者都不使用

关于配置参数的更多信息, 可以参阅官方文档

如果上面命令的输出没有错误, 那么就可以开始编译了.

图 4

若提示缺少某个依赖, 请手动安装它

编译安装

运行 make 即可开始构建 Python , 若你有多个 cpu 核心, 可以加上 -j 参数来多核编译, -j 后是你的 cpu 核心数, 可以使用 nproc 获取

若你机器的性能不佳, 这一过程可能十分漫长(几十分钟甚至更久), 你可以使用 screen 或 tmux 使其在后台运行

图 5

完成后, 使用 sudo make altinstall 安装(可能也很漫长,但比上一步要快), 之后你就可以使用 Python3.11:

图 6
shell
python3.11 --version
图 7

环境管理

虚拟环境

创建

Python 的虚拟环境可以将项目与全局环境相互隔离,可以避免污染你的系统环境,并方便得使多个 Python 版本共存与切换.

本文使用的虚拟环境工具是 venv , 它是 Python 官方推荐的工具.

但其实更现代的工具是 poetry , 然而其使用比较复杂,且主要面向 pypl 模块开发者, 如有兴趣你可以自行了解.

安装 venv:

shell
apt install python3-venv

使用以下命令在当前目录下创建虚拟环境:

shell
python3.11 -m venv myenv

这个命令会在你当前目录下创建 myenv 文件夹, 它就是一个"虚拟环境", 其中包含了你所指定的 Python3.11 版本, 未来在虚拟环境中安装的第三方库等文件也会在此文件夹内.

显然, 如果你想创建一个其他 Python 版本的虚拟环境, 那么只需要将前面的 python3.11 改成你需要的版本且已经安装的即可

使用

创建完成后,要进入到虚拟环境,需要激活它,使用以下命令.

shell
source myenv/bin/activate

这时你的终端应该会有一些标识来提示你处在虚拟环境中,如下

图 10

在虚拟环境中, python python3.11 python3 命令都可以打开 python ,并且版本都是 python3.11

在其中使用 pip 安装的包也都在虚拟环境中

使用 deactive 命令可退出虚拟环境

删除

使用 venv 工具创建的虚拟环境实际上就是一个文件夹, 删除它就是删除了环境

默认版本

始终建议使用官方软件源提供的 python 作为默认版本, 如果你真的想要替换默认版本, 那么可以使用下面的命令

shell
sudo ln -sf /usr/bin/python3.11 /usr/bin/python

这条命令将 python3.11 的可执行文件链接到 linux PATH 的默认搜索路径中, 此时系统的默认版本就是 3.11

TIP提示

即使默认版本就是你想要使用的 Python 版本, 你也应该在你的项目里创建虚拟环境, 除非你想把自己的系统环境搞得乱七八糟

使用conda安装和管理python多版本环境
JWT 认证及其在 FastAPI 中的使用