Ubuntu系统中Python版本控制的主流方法
pyenv是Ubuntu下最流行的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)
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init --path)"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc # 可选,用于集成virtualenv
source ~/.bashrc # 重新加载配置
pyenv install --list查看可安装的Python版本(如3.8.10、3.9.5),使用pyenv install <version>安装指定版本;用pyenv versions查看已安装版本,*标记当前使用的版本。pyenv global <version>(如pyenv global 3.8.10);.python-version文件):pyenv local <version>(适合项目级版本控制);pyenv shell <version>。pyenv uninstall <version>卸载指定版本;pyenv update更新pyenv至最新版本。update-alternatives是Ubuntu自带的命令行工具,用于管理系统中同一软件的多个版本,适合需要系统级默认版本控制的场景。
apt安装对应版本(如sudo apt install python3.8 python3.9),再添加至alternatives系统:sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 # 优先级1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 2 # 优先级2(数值越大优先级越高)
sudo update-alternatives --config python3,系统会列出所有已注册的Python版本,输入对应序号选择即可。python3命令的默认指向,不影响python命令(Ubuntu默认可能仍指向Python 2),且不建议随意更改系统默认Python版本(可能影响系统工具运行)。手动创建软链接是最基础的版本控制方法,适合临时切换或简单场景,但不够灵活(需手动维护链接)。
/usr/bin/python3.9);python软链接(sudo rm /usr/bin/python);sudo ln -s /usr/bin/python3.9 /usr/bin/python)。python --version确认版本切换成功。无论使用哪种版本控制方法,虚拟环境都是隔离项目依赖的关键工具,确保不同项目使用独立的Python环境和依赖包。
# 创建虚拟环境(指定Python版本,如3.8)
python3.8 -m venv myenv
# 激活虚拟环境
source myenv/bin/activate
# 激活后,终端提示符会显示虚拟环境名称(如(myenv)),此时pip安装的包会存放在虚拟环境中
# 停用虚拟环境
deactivate
pip install virtualenv # 安装virtualenv
virtualenv -p /usr/bin/python3.8 myenv # 指定Python版本创建虚拟环境
source myenv/bin/activate # 激活
pyenv virtualenv <version> <env-name>命令,可创建基于指定Python版本的虚拟环境,并用pyenv activate <env-name>激活,更方便管理。对于需要安装Ubuntu仓库中没有的旧版本Python(如3.7),可以使用deadsnakes PPA(个人包存档)。
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.7 python3.7-venv python3.7-dev # 安装Python 3.7及开发工具
python3.7 -m venv myenv创建基于Python 3.7的虚拟环境,实现版本隔离。