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

要说最灵活、最不易出乱子的方案,还得是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 —— 进入这个目录自动切换。pyenv shell 3.9.18 —— 临时覆盖,退出终端就失效。一切就绪后,用 python -V、which python、pyenv versions 查验是否生效。
实用提示
想查到底调用了哪个解释器的绝对路径,可以用 pyenv which python。更进阶的玩法是搭配 pyenv virtualenv 插件,为每个项目创建完全隔离的虚拟环境,从此告别包冲突的烦恼。
如果你不想自己编译源码,图省事,那 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 命令区分,互不干扰,适合不想费力编译的场景。
这是一个系统级的方案,把多个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 来解决。
如果你追求完全不污染宿主机环境,或者是在做CI/CD、版本对比测试,Docker 是最好的方案。
快速启动不同版本的交互式容器:
docker run -it --rm python:3.8 bash
docker run -it --rm python:3.9 bash
零侵入、用完即走。需要持久化代码和依赖的话,挂载卷或编写 Dockerfile 即可。
优先为每个项目创建隔离环境
无论是用自带的 venv 还是 pyenv 的虚拟环境,每个项目都应该有自己的“小天地”:
python3.x -m venv .venv && source .venv/bin/activatepyenv 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 pip 或 python3.12 -m pip 能从根本上避免混淆。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8