You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

安装Angular依赖遇Python版本问题:distutils缺失及语法错误求助

Angular依赖安装的Python版本适配问题解决

问题原因

  • Python 2.6报错:Python 2.6默认不包含distutils模块,而node-gyp依赖该模块处理版本校验,因此触发ModuleNotFoundError。
  • Python 3.6报错:你当前使用的node-gyp版本过旧,仅支持Python 2的语法规则(如不带括号的print语句),无法兼容Python 3的语法,导致SyntaxError。
  • Python 3.12无法安装:最新的Python 3.12移除或修改了部分旧API,而旧版node-gyp未适配这些变更,引发兼容性问题。

解决方案

1. 安装兼容的Python版本

选择Python 2.7或Python 3.7~3.11(node-gyp官方推荐的兼容区间):

  • 安装对应版本后,临时指定npm使用的Python路径:
    # Windows示例
    npm config set python C:\Python27\python.exe
    # Linux/macOS示例
    npm config set python /usr/bin/python2.7
    
  • 清理缓存并重新安装依赖:
    rm -rf node_modules package-lock.json
    npm install
    

2. 升级node-gyp到兼容版本

若想保留Python 3.12,可手动升级node-gyp:

  • 全局升级:
    npm install -g node-gyp@latest
    
  • 项目内锁定版本(在package.json中添加):
    "devDependencies": {
      "node-gyp": "^10.0.0"
    }
    
  • 清理缓存后重新安装:
    rm -rf node_modules package-lock.json
    npm install
    

3. 切换适配的Node.js版本(可选)

部分旧版Angular依赖的Node.js版本对node-gyp有特定要求,使用nvm切换到Angular官方推荐的Node版本(如Angular 16对应Node 16/18),可自动适配兼容的node-gyp版本,避免版本冲突。

版本要求的本质原因

Angular依赖的部分原生模块需通过node-gyp编译,而node-gyp对Python版本的限制源于:

  • 旧版node-gyp仅适配Python 2.7或低版本Python 3,但Python 3的语法与Python 2差异较大,导致语法错误。
  • 新版node-gyp虽支持高版本Python,但需要对应版本的Node.js配合;同时过旧的Python(如2.6)缺少distutils等必要模块,无法满足node-gyp的运行条件。

内容的提问来源于stack exchange,提问作者realjohnhudson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 04:35:23