M2 Mac执行npm install时遇distutils not found错误求助
错误根源
日志关键错误:ModuleNotFoundError: No module named 'distutils'。原因是Python 3.12移除了distutils模块,而项目依赖的node-sass需要通过node-gyp编译,旧版node-gyp依赖该模块。另外node-sass已停止维护,对Node 18和M2 ARM架构支持不足。
解决方法
方法一:安装distutils模块(临时修复)
M2 Mac上Python 3.12的distutils需单独安装:
- 终端执行:
或通过pip安装:brew install python-setuptoolspip3 install setuptools - 重新运行
npm install
方法二:替换node-sass为dart-sass(推荐)
node-sass已废弃,dart-sass是官方替代方案,无需编译,适配新架构和Node版本:
- 卸载node-sass:
npm uninstall node-sass - 安装dart-sass:
npm install sass --save-dev - 若项目配置中有引用
node-sass的地方(如webpack),替换为sass,并确保sass-loader版本兼容,必要时更新:npm install sass-loader@latest --save-dev - 重新执行
npm install
方法三:降级Python到3.11及以下
3.11及以下版本默认包含distutils:
- 用brew安装Python 3.11:
brew install python@3.11 - 配置npm使用该版本:
npm config set python python3.11 - 重新运行
npm install
内容的提问来源于stack exchange,提问作者Joe Stagner
相关产品推荐
相关产品推荐

