Ubuntu 更新 Python 的安全做法
在 Ubuntu 上更新 Python 有三条常用路径:使用 APT 安装新版本、用 pyenv 管理多版本、从源码编译安装。优先建议通过包管理器或版本管理工具完成,尽量避免直接替换系统自带的 /usr/bin/python3,以免影响系统工具链的稳定性。
方法一 使用 APT 安装或升级到新版本
- 更新索引并安装依赖
- sudo apt update
- sudo apt install -y software-properties-common
- 添加 deadsnakes PPA(按需)
- sudo add-apt-repository ppa:deadsnakes/ppa
- sudo apt update
- 安装所需版本(示例为 Python 3.11)
- sudo apt install -y python3.11
- 可选:将新版本加入 alternatives 并切换默认 python3
- sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 1
- sudo update-alternatives --config python3
- 验证
- python3 --version
- python3.11 --version
说明:若只想把现有补丁版本升级到仓库提供的最新小版本,可直接执行 sudo apt upgrade python3;若要跨小版本(如 3.10 → 3.11),应安装对应 python3.x 包并用 alternatives 切换。
方法二 使用 pyenv 管理多个 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 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.11.11
- pyenv global 3.11.11 # 全局
- pyenv local 3.11.11 # 仅当前项目目录
- 验证
- python --version
- pyenv versions
说明:pyenv 可在不影响系统 Python 的前提下,为不同项目灵活切换版本,并可配合 pyenv-virtualenv 管理虚拟环境。
方法三 从源码编译安装指定版本
- 安装编译依赖
- 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 liblzma-dev
- 下载并编译(示例 3.11.11)
- cd /usr/src
- sudo wget https://www.python.org/ftp/python/3.11.11/Python-3.11.11.tgz
- sudo tar xzf Python-3.11.11.tgz
- cd Python-3.11.11
- ./configure --enable-optimizations
- make -j “$(nproc)”
- sudo make altinstall
- 验证
- python3.11 --version
提示:使用 make altinstall 可避免覆盖系统默认 python3;如需设为默认,请通过 update-alternatives 管理,而非直接替换 /usr/bin/python3。
验证与常见问题处理
- 验证命令
- python3 --version
- python3.x --version
- 或 pyenv versions(使用 pyenv 时)
- 常见问题
- 命令未找到:确认已安装对应版本(如 python3.11),或用 alternatives 配置默认 python3。
- 包安装失败:先 sudo apt update,必要时添加 deadsnakes PPA 再安装。
- 与系统工具冲突:不要直接替换 /usr/bin/python3;使用 alternatives 或 pyenv 隔离与切换。
- 多版本并存:优先用 pyenv;项目内用 python3.x -m venv 创建隔离环境。
最佳实践
- 使用虚拟环境隔离依赖:python3.x -m venv .venv && source .venv/bin/activate
- 迁移依赖:pip freeze > requirements.txt;在新环境 pip install -r requirements.txt
- 变更前备份并在测试环境验证;为关键项目单独锁定 Python 版本与依赖。