You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu从20.04升级到22.04后,Python3.9虚拟环境中pip报错ModuleNotFoundError: No module named 'distutils.cmd'的解决求助

Ubuntu从20.04升级到22.04后,Python3.9虚拟环境中pip报错ModuleNotFoundError: No module named 'distutils.cmd'的解决求助

看起来你踩了Ubuntu版本升级后Python环境变动的坑,别慌,咱们一步步来解决:

首先你之前尝试安装python3.8-distutils是找错了版本——你的虚拟环境是基于Python3.9的,对应的distutils包应该是python3.9-distutils,而不是3.8的,这就是为什么你会遇到安装候选包不存在的错误。

试试下面的步骤:

第一步:尝试直接安装对应版本的distutils包

  1. 先更新一下系统软件源:
    sudo apt update
    
  2. 安装Python3.9对应的distutils包:
    sudo apt install python3.9-distutils
    

如果安装成功,重新激活你的Python3.9虚拟环境,再运行pip应该就能正常工作了。

如果上面的包找不到,那就添加支持多Python版本的PPA源

Ubuntu22.04默认源里可能没有Python3.9的相关包,这时候我们可以添加deadsnakes这个专门提供各种Python版本的PPA:

  1. 添加PPA源:
    sudo add-apt-repository ppa:deadsnakes/ppa
    
  2. 再次更新源:
    sudo apt update
    
  3. 安装python3.9-distutils:
    sudo apt install python3.9-distutils
    

万一还是不行?那就重建虚拟环境

有时候系统升级后,旧的虚拟环境会因为底层Python依赖变动而损坏,这时候重建虚拟环境是最稳妥的办法:

  1. 先备份当前虚拟环境的依赖(如果还能激活的话):
    • 激活虚拟环境:source /path/to/your/venv/bin/activate
    • 导出依赖列表:pip freeze > requirements.txt
  2. 删除旧的虚拟环境:
    rm -rf /path/to/your/venv
    
  3. 用Python3.9重新创建虚拟环境:
    python3.9 -m venv /path/to/new/venv
    
  4. 激活新环境并安装依赖:
    source /path/to/new/venv/bin/activate
    pip install -r requirements.txt
    

备注:内容来源于stack exchange,提问作者Angelo Mascaro

火山引擎 最新活动