Ubuntu22.04下pyenv与apt安装Python的冲突及构建报错求助
问题解答
1. pyenv与apt安装的Python是否会冲突?
默认不会冲突。pyenv通过修改shell的PATH环境变量,让自身管理的Python版本优先级高于系统apt安装的版本,系统Python仍保留在原路径(比如/usr/bin/python3)。只要正确完成pyenv初始化(将eval "$(pyenv init -)"添加到~/.bashrc或~/.zshrc并重启shell),就能通过pyenv local/shell/global自由切换版本,不会干扰系统Python的正常使用。
如果出现版本混淆,大概率是pyenv初始化不完整,或是手动修改PATH导致优先级错乱。
2. 如何解决"setup.py" install is deprecated报错?
这个报错并非pyenv未正确安装Python,而是当前激活环境的pip/setuptools版本太新,与Python3.7.5不兼容。Python3.7属于旧版本,而pip22.0.2、setuptools59.6.0已经废弃了setup.py install的旧方式,解决方案如下:
- 先确保激活pyenv的3.7.5版本:
pyenv local 3.7.5 # 仅当前目录生效 # 或 pyenv shell 3.7.5 # 仅当前shell会话生效 - 降级pip到Python3.7兼容的最高版本(pip20.3.4是支持Python3.7的最后一个版本):
pip install --upgrade pip==20.3.4 - 降级setuptools到兼容版本:
pip install --upgrade setuptools==44.1.1 - 后续安装依赖时,尽量用pip的标准命令替代
python setup.py install,比如:pip install . # 替代python setup.py install,安装当前目录的包
3. Ubuntu 22.04 LTS上管理多Python版本的方法
- pyenv:轻量且灵活的工具,支持安装几乎所有Python版本,切换方便,完全不干扰系统环境,是最推荐的方案之一。
- venv/virtualenv:用于创建项目独立虚拟环境,隔离依赖。
venv是Python3.3+自带的,无需额外安装;virtualenv功能更丰富,支持旧版Python,可结合系统Python或pyenv的版本使用。 - conda/miniconda:适合数据科学场景,自带包管理系统,能同时管理Python和非Python依赖,可快速创建不同Python版本的隔离环境。
- 系统apt+update-alternatives:Ubuntu22.04的软件源中包含Python3.8、3.9、3.10,可直接用
sudo apt install python3.8等安装,再通过update-alternatives管理默认Python版本:# 添加版本到备选列表 sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 2 # 切换默认版本 sudo update-alternatives --config python3
内容的提问来源于stack exchange,提问作者BadProgrammer
相关产品推荐
相关产品推荐

