Ubuntu 更新 Python 的推荐做法
在 Ubuntu 上,系统自带的 Python 与系统工具耦合度高,建议采用“安装新版本 + 多版本共存 + 虚拟环境”的策略,避免直接替换系统 Python。常见做法包括:使用 APT 与 deadsnakes PPA、从源码编译安装、使用 pyenv 管理多版本,以及用 Docker 隔离运行环境。
方法一 使用 APT 与 deadsnakes PPA 安装新版本
- 更新索引并安装必要工具:
- sudo apt update
- sudo apt install -y software-properties-common
- 添加 deadsnakes PPA(提供多版本 Python):
- sudo add-apt-repository ppa:deadsnakes/ppa
- sudo apt update
- 安装所需版本(示例为 Python 3.10):
- sudo apt install -y python3.10
- 验证安装:
- 可选:将新版本加入备选并切换默认 python3
- sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 2
- sudo update-alternatives --config python3
- 为新版本准备 pip(部分系统可能需要额外包,如 python3.10-distutils):
- python3.10 -m ensurepip --upgrade
- python3.10 -m pip install --upgrade pip setuptools wheel
说明:此方法简单、稳定,适合大多数桌面与服务器环境。
方法二 从源码编译安装指定版本
- 安装编译依赖:
- sudo apt update
- sudo apt install -y build-essential checkinstall
libreadline-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev
libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev
- 下载并编译(示例为 Python 3.11.0):
- cd /usr/src
- sudo wget https://www.python.org/ftp/python/3.11.0/Python-3.11.0.tgz
- sudo tar xzf Python-3.11.0.tgz
- cd Python-3.11.0
- sudo ./configure --enable-optimizations
- sudo make -j$(nproc) altinstall
- 验证安装:
- python3.11 --version
提示:使用 make altinstall 可避免覆盖系统默认的 python3,新版本以 python3.x 形式存在。
方法三 使用 pyenv 管理多版本(推荐给开发者)
- 安装依赖:
- 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 python-openssl git
- 安装与初始化 pyenv:
- curl https://pyenv.run | bash
- 将以下内容加入 ~/.bashrc 或 ~/.zshrc 并重新加载:
- export PATH=“$HOME/.pyenv/bin:$PATH”
- eval “$(pyenv init --path)”
- eval “$(pyenv init -)”
- eval “$(pyenv virtualenv-init -)”
- source ~/.bashrc 或 source ~/.zshrc
- 安装与切换版本:
- pyenv install 3.10.12
- pyenv global 3.10.12 # 全局默认
- pyenv local 3.9.18 # 仅当前项目目录
- 结合 pyenv-virtualenv 创建隔离环境:
- pyenv virtualenv 3.10.12 myproj-310
- pyenv activate myproj-310
说明:pyenv 能在用户态管理多版本,互不干扰,适合多项目并行开发。
方法四 使用 Docker 隔离运行环境
- 直接拉取并运行所需版本(示例为 3.9):
- docker run -it --rm python:3.9 bash
- 在容器中安装依赖、运行脚本,完全避免影响宿主机。
说明:适合 CI/CD、测试与部署,环境一致性最好。
注意事项与最佳实践
- 不要覆盖或删除系统自带的 /usr/bin/python3,以免影响 apt、gnome-terminal 等系统组件;如需切换默认版本,请使用 update-alternatives 或 pyenv,并保留系统版本为备选。
- 为每个项目使用 venv 或 pyenv-virtualenv 隔离依赖,避免跨项目冲突:
- python3.x -m venv .venv && source .venv/bin/activate
- 升级前备份数据与虚拟环境;升级后用 pip 检查与迁移依赖:
- python3.x -m pip freeze > requirements.txt
- 若遇到构建失败,优先检查编译依赖是否齐全;使用 pyenv 时可用 pyenv install -v 查看详细日志定位问题。