在 Debian 上切换 Python 版本,常见做法取决于你是系统级切换还是用户/项目级切换。下面按推荐程度从高到低说明。
update-alternatives(系统级切换)适用于:想改变 python / python3 命令默认指向的版本。
ls /usr/bin/python*
常见如:
/usr/bin/python3.11
/usr/bin/python3.12
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 2
最后的数字是优先级,越大越优先
sudo update-alternatives --config python3
输出示例:
There are 2 choices for the alternative python3.
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/python3.12 2 auto mode
1 /usr/bin/python3.11 1 manual mode
Press <enter> to keep the current choice[*], or type selection number:
python3 --version
⚠️ 注意
/usr/bin/python(无版本号),可能影响系统工具python 命令,只保留 python3pyenv(用户级 / 项目级,最安全)适用于:开发环境、多项目不同 Python 版本。
sudo apt update
sudo apt install -y \
make 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
curl https://pyenv.run | bash
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
(建议写入 ~/.bashrc 或 ~/.zshrc)
pyenv install 3.11.6
pyenv install 3.12.1
pyenv global 3.11.6 # 全局
pyenv local 3.12.1 # 当前目录
pyenv shell 3.12.1 # 当前 shell
python --version
✅ 优点
python3.11 -m venv venv
source venv/bin/activate
激活后:
python --version
退出:
deactivate
sudo ln -sf /usr/bin/python3.12 /usr/bin/python3
⚠️ 可能导致 apt、dpkg、系统脚本异常。
| 场景 | 推荐方式 |
|---|---|
| 系统默认 Python | update-alternatives |
| 开发 / 多版本 | ✅ pyenv |
| 单个项目 | ✅ venv |
| 生产环境 | 保持系统 Python 不变 |
如果你愿意,可以告诉我:
我可以给你一套最合适的具体方案。