商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Ubuntu中Python多版本如何共存

Ubuntu中Python多版本如何共存

  发布于2026-07-03 阅读(0)

扫一扫,手机访问

Ubuntu 下 Python 多版本共存的实用方案

在Ubuntu系统上管理多个Python版本,一直是让不少开发者头疼的事。特别是当你手头既有依赖Python 3.8的老项目,又想在Python 3.12上尝鲜新特性时,一个不小心,系统就乱了。其实,路子有不少,关键在于选对适合你场景的那个。

Ubuntu中Python多版本如何共存

方案一:用 pyenv 精准管理多版本(强烈推荐)

要说最灵活、最不易出乱子的方案,还得是pyenv。它不会动系统自带的Python,而是在用户态通过修改环境变量来切换解释器版本,干净利落。

准备工作:安装编译依赖

动手之前,先确保系统装齐了编译Python所需的工具链。直接敲下面这条命令,把必要的依赖一网打尽:

sudo apt update && sudo apt install -y build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python-openssl git

安装 pyenv 本身

一条命令就能搞定:

curl https://pyenv.run | bash

装完之后,需要在 ~/.bashrc 末尾追加下面几行配置,然后让它生效:

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
# 可选:集成虚拟环境插件
eval "$(pyenv virtualenv-init -)"

记得执行 source ~/.bashrc 刷新配置。

安装与切换版本

先用 pyenv install --list 看看有哪些版本可以装。挑一个你需要的,比如:

pyenv install 3.11.9

装好之后,怎么切换?pyenv提供了三级作用域:

  • 全局pyenv global 3.11.9 —— 整个系统默认用这个版本。
  • 项目目录pyenv local 3.10.12 —— 进入这个目录自动切换。
  • 当前 shellpyenv shell 3.9.18 —— 临时覆盖,退出终端就失效。

一切就绪后,用 python -Vwhich pythonpyenv versions 查验是否生效。

实用提示

想查到底调用了哪个解释器的绝对路径,可以用 pyenv which python。更进阶的玩法是搭配 pyenv virtualenv 插件,为每个项目创建完全隔离的虚拟环境,从此告别包冲突的烦恼。

方案二:用 deadsnakes PPA 快速安装多版本

如果你不想自己编译源码,图省事,那 deadsnakes 这个第三方软件源就是现成的选择。

添加源并安装

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.12 python3.12-venv python3.12-dev

使用方式

安装后直接用带版本号的命令调用:python3.12 -V。想创建虚拟环境也很简单:

python3.12 -m venv .venv && source .venv/bin/activate

各版本以 python3.x 命令区分,互不干扰,适合不想费力编译的场景。

方案三:用 update-alternatives 切换系统默认 Python

这是一个系统级的方案,把多个Python版本纳入统一调度,再通过交互菜单选择一个作为默认的 python 命令。

注册备选版本

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.10 2
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.12 1

后面的数字是优先级,数字越大优先级越高。

交互式选择默认版本

执行 sudo update-alternatives --config python,输入序号即可切换。

验证与查看

sudo update-alternatives --list python
python -V

需要谨慎的地方

修改 /usr/bin/python 会影响整个系统,一些依赖Python 2.x的底层工具可能会因此罢工。生产环境不建议这么干,更推荐在用户态用 pyenv 或项目级 venv 来解决。

方案四:用 Docker 零侵入隔离版本

如果你追求完全不污染宿主机环境,或者是在做CI/CD、版本对比测试,Docker 是最好的方案。

快速启动不同版本的交互式容器:

docker run -it --rm python:3.8 bash
docker run -it --rm python:3.9 bash

零侵入、用完即走。需要持久化代码和依赖的话,挂载卷或编写 Dockerfile 即可。

最佳实践与常见问题

优先为每个项目创建隔离环境

无论是用自带的 venv 还是 pyenv 的虚拟环境,每个项目都应该有自己的“小天地”:

  • 原生 venvpython3.x -m venv .venv && source .venv/bin/activate
  • pyenv 虚拟环境pyenv virtualenv && pyenv activate

正确安装与调用 pip

混用不同版本的 pip 是常见的坑。安全做法是明确指定解释器:

python3.12 -m pip install 

如果提示找不到 pip,多半是没装对应版本的 -venv 包。装好之后再创建虚拟环境,用 python -m pip 就对了。

千万别替换系统 Python

系统自带的 Python 往往被很多底层工具依赖,随意覆盖 /usr/bin/python 极有可能搞崩系统。使用 python3.x 命令或用户态工具(如 pyenv)切换才是正解。

多用户或 CI 场景

这种情况优先上 pyenv 或 Docker。如果非要用 update-alternatives 做系统级默认,务必先在测试环境充分验证。

常见故障排查

  • 编译失败:八成是缺了依赖包,回头对照方案一的依赖清单,补齐后重试。
  • 命令找不到:检查 PATH 和 shell 配置是否已加载。别忘了 source ~/.bashrc
  • 包装到了错误环境:确认当前是否激活了正确的虚拟环境。用 python -m pippython3.12 -m pip 能从根本上避免混淆。
本文转载于:https://www.yisu.com/ask/49993166.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注