最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Ubuntu下Python多版本共存怎样实现
时间:2026-07-19 09:21:56 编辑:袖梨 来源:一聚教程网
Ubuntu下Python多版本共存的实现方法

在Ubuntu系统中,由于系统自带Python版本(如2.7或3.x),而开发中常需要使用不同版本的Python(如3.8、3.9等),因此需要通过工具或系统功能实现多版本共存。以下是几种常用且可靠的方法:
一、使用pyenv(推荐:用户级版本管理,灵活隔离)
pyenv是Python开发者最常用的版本管理工具,可在用户目录下安装和管理多个Python版本,不影响系统Python,且能通过目录或shell会话灵活切换版本。
1. 安装依赖包
pyenv编译Python源码需要依赖一些开发库,执行以下命令安装:
sudo apt updatesudo 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 git2. 安装pyenv
通过curl下载并运行pyenv安装脚本:
curl https://pyenv.run | bash3. 配置环境变量
将以下内容添加到~/.bashrc(bash用户)或~/.zshrc(zsh用户)文件末尾:
export PATH="$HOME/.pyenv/bin:$PATH"eval "$(pyenv init --path)"eval "$(pyenv init -)"保存后重新加载配置文件:
source ~/.bashrc# 或 source ~/.zshrc4. 安装与管理Python版本
- 列出可安装版本:查看pyenv支持的Python版本(包括官方版本、衍生版等):
pyenv install --list - 安装指定版本:选择需要的版本(如3.8.12、3.9.7)进行安装:
pyenv install 3.8.12pyenv install 3.9.7 - 查看已安装版本:显示所有已安装的Python版本及当前使用的版本(
*标记当前版本):pyenv versions - 设置版本:
- 全局默认版本(对所有终端生效):
pyenv global 3.8.12 - 局部版本(仅对当前目录及子目录生效,适合项目级隔离):
cd /path/to/projectpyenv local 3.9.7# 当前目录下使用3.9.7 - 临时版本(仅当前shell会话生效):
pyenv shell 3.8.12
- 全局默认版本(对所有终端生效):
5. 验证版本
python --version# 查看当前使用的Python版本pyenv versions# 确认版本切换状态6. 结合虚拟环境(可选)
为避免项目依赖冲突,可使用pyenv-virtualenv插件创建隔离的虚拟环境:
# 安装插件(部分pyenv版本已集成)git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenvecho 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrcsource ~/.bashrc# 创建虚拟环境(指定Python版本)pyenv virtualenv 3.8.12 myenv-3.8# 激活虚拟环境pyenv activate myenv-3.8# 停用虚拟环境pyenv deactivate二、使用update-alternatives(系统级版本管理,适合少量版本)
update-alternatives是Ubuntu自带的版本管理工具,可用于管理系统级的Python版本(如python3命令),适合需要快速切换系统默认Python的场景。
1. 安装所需Python版本
通过apt安装需要共存的Python版本(如3.8、3.9):
sudo apt updatesudo apt install python3.8 python3.92. 配置alternatives
将安装的Python版本添加到alternatives系统中:
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1# 优先级1sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 2# 优先级23. 切换默认版本
通过交互式菜单选择默认的python3版本:
sudo update-alternatives --config python3根据提示输入对应版本的编号,按回车键确认。
4. 验证版本
python3 --version# 查看当前默认的Python3版本注意事项
- 此方法仅修改
python3命令的默认版本,不影响python命令(系统可能仍指向Python 2.x)。 - 不要随意修改系统自带的Python 2.x版本,可能导致系统脚本无法运行。
三、从源码编译安装(高级:完全自定义,适合特定需求)
若需要特定版本的Python(如3.7.12)或启用特殊编译选项(如优化性能),可从源码编译安装到用户目录。
1. 安装编译依赖
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 git2. 下载并解压源码
从Python官网下载所需版本的源码包(如3.7.12):
wget https://www.python.org/ftp/python/3.7.12/Python-3.7.12.tgztar -xf Python-3.7.12.tgzcd Python-3.7.123. 配置与编译
配置编译选项(--prefix指定安装目录为用户目录,避免覆盖系统文件):
./configure --prefix=$HOME/.local/python3.7.12 --enable-optimizationsmake -j $(nproc)# 使用多核编译,加快速度4. 安装
make altinstall# 使用altinstall避免覆盖系统默认的python35. 使用版本
将安装目录添加到PATH环境变量(~/.bashrc或~/.zshrc):
export PATH="$HOME/.local/python3.7.12/bin:$PATH"source ~/.bashrc验证版本:
python3.7 --version# 使用自定义安装的版本注意事项
- 编译过程耗时较长,需确保系统资源充足。
- 避免覆盖系统默认的
python3命令,建议使用python3.x格式的命令。
四、使用容器技术(Docker,彻底隔离,适合复杂项目)
若项目需要完全隔离的开发环境(包括Python版本、依赖库、操作系统),可使用Docker容器。容器内的环境与主机系统完全隔离,不会影响主机配置。
1. 安装Docker
sudo apt updatesudo apt install docker.iosudo systemctl start dockersudo systemctl enable docker2. 拉取Python镜像
从Docker Hub拉取所需版本的Python镜像(如3.8、3.9):
docker pull python:3.8docker pull python:3.93. 运行容器
启动容器并在其中运行Python:
docker run -it --name py38 python:3.8 bash# 进入Python 3.8容器docker run -it --name py39 python:3.9 bash# 进入Python 3.9容器容器内可直接使用对应版本的Python:
python --version# 查看容器内Python版本4. 挂载项目目录(可选)
将主机项目目录挂载到容器中,方便代码编辑与调试:
docker run -it -v /path/to/host/project:/project -w /project python:3.8 bash此时容器内的/project目录对应主机的/path/to/host/project,可直接修改代码。
总结
- pyenv:适合需要灵活管理多个Python版本、项目级隔离的用户,是日常开发的最佳选择。
- update-alternatives:适合系统级默认版本切换,操作简单,但功能有限。
- 源码编译:适合需要特定版本或自定义编译选项的高级用户,需掌握编译知识。
- Docker:适合需要彻底隔离环境的复杂项目,保证开发与生产环境一致。
根据自身需求选择合适的方法,即可实现Ubuntu下Python多版本共存。
相关文章
- 逆战未来枪械大全 逆战未来枪械稀有度等级与获取方式详解 07-19
- 逆战未来新手攻略 逆战未来萌新入门避坑指南 07-19
- "无醇啤酒"是完全不含酒精吗 蚂蚁庄园1月17日答案早知道 07-19
- "太常寺"是古代掌管什么事务的机构 蚂蚁新村1月16日答案 07-19
- 四川名菜"开水白菜"就是用开水炖白菜吗 蚂蚁庄园1月17日答案早知道 07-19
- 蚂蚁新村今天正确答案1.16 07-19