Ubuntu 22.04下Python3.9安装包报distutils.cmd缺失如何解决
问题原因
Ubuntu 22.04 软件源将Python各版本的distutils组件拆分为独立安装包,默认安装的Python3.9不会自动携带该模块。distutils属于Python标准库的系统级组件,无法通过pip单独安装修复,不管是全局环境还是虚拟环境,只要底层基于系统源安装的Python3.9运行,缺少对应系统包就会抛出ModuleNotFoundError: No module named 'distutils.cmd'错误。
修复流程
1. 安装Python3.9匹配的distutils组件
执行以下命令安装对应依赖,注意不要安装通用的python3-distutils包,该包仅适配系统默认的Python3.10,和3.9版本不兼容:
sudo apt update sudo apt install python3.9-distutils
如果后续需要安装带C扩展的第三方库(如numpy、pandas等),建议同步安装开发头文件包,避免编译报错:
sudo apt install python3.9-dev
2. 修复Python3.9的pip环境
安装完distutils后,使用Python自带的ensurepip模块为3.9版本初始化并升级pip,确保pip和Python版本绑定正确:
python3.9 -m ensurepip --upgrade
执行完成后验证pip版本匹配性:
python3.9 -m pip --version
正常输出会明确显示pip对应Python 3.9版本路径,不会关联到系统默认的Python3.10。
3. 正常安装依赖
此时执行安装命令即可正常为Python3.9安装第三方包,不会再出现distutils相关报错:
python3.9 -m pip install mypackage
虚拟环境注意事项
PyCharm或venv创建的Python3.9虚拟环境会继承系统层面Python3.9的标准库组件,因此必须先完成上述系统级修复步骤再创建虚拟环境。已经创建的报错虚拟环境直接删除重建即可,不需要在虚拟环境内额外安装distutils相关包。
避坑提示
- 不要尝试执行
pip install distutils修复问题,PyPI源上的distutils是过时的占位包,安装后会和系统Python组件产生冲突。 - 不要手动修改系统默认的
python3软链接指向Python3.9,会导致依赖Python3.10的系统组件(如apt、桌面环境核心程序)运行崩溃。
内容的提问来源于stack exchange,提问作者brownser
相关产品推荐
相关产品推荐

