必须切换到setuptools兼容层:运行python3 -m pip install --upgrade pip setuptools,再确保setuptools_use_distutils=local生效;若失败则建虚拟环境并用python -m pip升级,避免软链接或系统pip混用。

“distutils已过期”不是警告,是 Python 3.12+ 的正式移除行为——你看到的报错本质是环境在用新解释器跑老兼容逻辑,必须切换到 setuptools 兼容层,而不是“升级 distutils”。
pip install 报 ModuleNotFoundError: No module named 'distutils' 怎么快速修复
这个错误出现在执行 pip install 时,根本原因是当前 Python(如 3.13)已彻底移除 distutils,但 pip 或某些包的构建脚本仍硬依赖它。直接装 distutils 不可能成功,因为标准库里真没了。
- 优先运行
python3 -m pip install --upgrade pip setuptools:用-m模式确保调用的是当前 Python 版本对应的 pip,它会自动拉取新版 setuptools 并启用其内置的setuptools._distutils兼容实现 - 如果失败,立刻检查
SETUPTOOLS_USE_DISTUTILS环境变量是否生效:echo $SETUPTOOLS_USE_DISTUTILS应输出local;没输出就补上export SETUPTOOLS_USE_DISTUTILS=local,再重试 - 别用系统级
pip3 install命令:它很可能绑定旧 Python(如 /usr/bin/python3 → 3.10),而你的 shell 是 3.13,解释器和 pip 不匹配
为什么 setuotools ≥64.0 还要手动设 SETUPTOOLS_USE_DISTUTILS=local
新版 setuptools 确实自带 _distutils,但它默认不替换标准库路径——只有显式启用该环境变量,Python 才会在 import 时把 distutils 请求重定向到 setuptools._distutils。
从QuickView趋势笔记生成韩语AI播客包,含双人主持脚本(Callie×Nick)、Gemini多说话人TTS音频、字幕时间轴与渲染修正、缩略图+MP4包装及YouTube标题/描述输出。支持完整版(15~20分钟)和压缩版(5~7分钟)。
- 不设变量时,
import distutils仍走标准库路径,直接报错 - 设为
local后,setuptools 的.pth文件(如distutils-precedence.pth)才生效,强制优先加载兼容层 - 虚拟环境中首次运行
pip install有时能自动触发该机制,但前提是 pip 本身是通过get-pip.py或ensurepip安装的,不是 apt 装的残留版本
嵌入式设备(如 RK3528 + Ubuntu Jammy)上最稳的操作路径
这类系统常有 apt 安装的 Python 3.10 和手动编译的 3.13 共存,distutils 错误高发,且不能随便动系统包。
- 跳过全局修复,直接建干净虚拟环境:
sudo apt install python3.13-venv→python3.13 -m venv .venv→source .venv/bin/activate - 激活后立即执行:
python -m pip install --upgrade pip setuptools(注意是python -m pip,不是pip) - 验证:运行
python -c "import distutils.util"不报错,再装业务包 - 避免软链接
distutils → setuptools/_distutils:嵌入式设备上site-packages路径易错位,且 setuptools 升级后该目录结构可能变动,导致后续ImportError: cannot import name 'sysconfig'
真正容易被忽略的点是:错误日志里出现 _distutils_hack 或 distutils-precedence.pth 字样时,说明 setuptools 已安装但兼容层未激活——这时候光升级 pip 没用,必须确认环境变量或使用 -m 模式触发钩子。










