杰瑞科技汇

Python2和Python3如何同时安装?

不要删除系统自带的 Python

很多 Linux 发行版(尤其是 CentOS, RHEL, Fedora)的系统工具和依赖包依赖于系统自带的 Python 版本(通常是 Python 2 或 Python 3)。千万不要尝试删除或升级系统自带的 Python,否则可能导致系统崩溃。

Python2和Python3如何同时安装?-图1
(图片来源网络,侵删)

我们的目标是:

  1. 保留系统自带的 Python。
  2. 额外安装一个或多个新的 Python 版本(如 Python 3.8, 3.9, 3.10 等)。
  3. 使用 pyenv 等工具来管理和切换这些新安装的 Python 版本,而不会影响系统 Python。

推荐方法:使用 pyenv 进行多版本管理

pyenv 是一个极其强大的 Python 版本管理工具,它允许您在同一台机器上安装多个 Python 版本,并轻松地在它们之间切换,这是 Python 开发者的首选方案。

为什么推荐 pyenv

  • 隔离性:每个 Python 版本都是独立安装的,互不干扰。
  • 灵活性:可以安装任何您想要的 Python 版本(包括最新的 3.x 和历史 2.x 版本)。
  • 安全性:不会影响系统自带的 Python。
  • 便捷性:通过一个简单的命令 pyenv local <version> 即可切换项目所用的 Python 版本。

详细安装步骤 (以 Ubuntu/Debian 为例)

以下步骤在 Ubuntu 20.04/22.04 和 Debian 10/11 上经过测试。

第 1 步:安装系统依赖

pyenv 及其编译的 Python 需要一些系统依赖库,打开终端,执行以下命令:

Python2和Python3如何同时安装?-图2
(图片来源网络,侵删)
# 更新软件包列表
sudo apt update
# 安装编译 Python 所需的依赖
sudo apt install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

第 2 步:安装 pyenv

最简单的方式是使用官方的安装脚本。

curl https://pyenv.run | bash

这个脚本会自动完成以下操作:

  1. 克隆 pyenv 仓库到 ~/.pyenv
  2. pyenv 的初始化代码添加到您的 Shell 配置文件中(如 ~/.bashrc, ~/.zshrc)。

第 3 步:配置 Shell 环境

为了让当前的终端会话识别 pyenv 命令,您需要重新加载 Shell 配置文件,或者打开一个新的终端窗口。

如果您使用的是 Bash (Ubuntu 默认):

# 重载配置文件
exec "$SHELL"

或者直接打开一个新的终端窗口。

验证 pyenv 是否安装成功:

pyenv --version
# 应该输出类似 pyenv 2.3.15 的信息

第 4 步:使用 pyenv 安装 Python 2 和 Python 3

您可以使用 pyenv install 命令来安装任何您想要的 Python 版本。

查找可安装的 Python 版本

# 搜索所有可用的版本
pyenv install --list
# 如果想快速找最新的 2.x 和 3.x 版本,可以过滤一下
pyenv install --list | grep " 2\.[0-9]\.[0-9]"
pyenv install --list | grep " 3\.[0-9]\.[0-9]"

安装 Python 2.7 (最后一个稳定版)

# 编译和安装需要一些时间,请耐心等待
pyenv install 2.7.18

安装 Python 3 (Python 3.9)

# 同样,安装过程需要一些时间
pyenv install 3.9.18

验证安装 安装完成后,pyenv 会知道这些版本的存在。

pyenv versions
# 输出类似:
# * system (set by /home/user/.python-version)
#   2.7.18
#   3.9.18
# 星号 * 表示当前正在使用的版本

第 5 步:切换和使用 Python 版本

pyenv 提供了三种方式来切换 Python 版本,按推荐顺序排列:

全局设置 (影响整个用户)

# 设置默认的 Python 版本为 Python 3.9
pyenv global 3.9.18
# 验证
python --version
# 输出: Python 3.9.18
# 现在再查看版本列表
pyenv versions
# 输出:
#   system
#   2.7.18
# * 3.9.18 (set by /home/user/.python-version)

要切换回系统 Python,只需执行 pyenv global system

目录设置 (针对特定项目,最常用) 进入您的项目目录,为该项目设置一个特定的 Python 版本。

# 创建并进入一个新项目目录
mkdir my_project_py2
cd my_project_py2
# 为当前目录设置 Python 2.7
pyenv local 2.7.18
# 验证
python --version
# 输出: Python 2.7.18
# pyenv 会在当前目录下创建一个名为 .python-version 的文件来记录设置
cat .python-version
# 输出: 2.7.18

只要您在这个目录或其子目录中打开终端,pyenv 会自动使用 Python 2.7,当您离开这个目录后,会恢复到之前的全局版本。

临时设置 (仅对当前终端会话有效)

# 在任意目录下,临时使用 Python 2.7
pyenv shell 2.7.18
python --version
# 输出: Python 2.7.18
# 这个设置只对当前终端窗口有效,关闭后即恢复

针对 CentOS/RHEL/Fedora 用户

步骤基本相同,但安装系统依赖的命令不同。

第 1 步:安装系统依赖

# 安装 EPEL 仓库 (如果尚未安装)
sudo yum install -y epel-release
# 安装编译依赖
sudo yum groupinstall -y "Development Tools"
sudo yum install -y openssl-devel bzip2-devel libffi-devel xz-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-develxz-devel libffi-devel openssl-devel

第 2 步及之后步骤

与 Ubuntu/Debian 的 第 2 步到第 5 步 完全相同。


总结与最终建议

方法 优点 缺点 适用场景
pyenv 强烈推荐,功能强大,隔离性好,不影响系统,易于管理。 编译安装耗时,初始配置稍复杂。 所有需要管理多个 Python 版本的场景,尤其是开发环境。
系统包管理器 安装最快,简单直接。 版本可能很旧,无法自定义,可能破坏系统环境。 仅当您只需要系统提供的默认 Python 版本,且版本满足需求时。
源码编译 完全自定义,可以安装任何版本。 手动管理麻烦,容易产生冲突,没有版本切换功能。 不推荐新手使用,pyenv 已经做得更好了。

最终建议:

对于绝大多数用户,请遵循 pyenv 的安装和使用方法,它为您提供了一个干净、灵活且可维护的 Python 环境,是现代 Python 开发的标准实践,一旦配置好,您就可以轻松地在 Python 2 和 Python 3 以及它们的不同子版本之间无缝切换。

分享:
扫描分享到社交APP
上一篇
下一篇