2021/11/1 CircleCI构建报错:找不到Python可执行文件,可设置PYTHON环境变量
问题根因
- 你项目依赖的旧版
node-sass内置了node-gyp@3.8.0,该版本仅支持Python2,无法识别Python3 - 你使用的
circleci/ruby:2.7.4-node-browsers镜像为滚动更新标签,近期官方更新镜像后默认移除了Python2,且系统未配置python别名指向Python3可执行文件,导致node-gyp查找Python环境失败,这也是此前正常的提交现在构建失败的核心原因 - 此次构建自动使用了Node 16版本,旧版
node-sass本身不兼容Node 16,触发了源码编译逻辑,才会调用node-gyp依赖Python环境
解决方案
可根据项目情况任选以下一种:
- 最优方案(长期无兼容问题):将
node-sass替换为官方推荐的sass(dart-sass),两者API完全兼容,无需修改业务代码,且不存在原生编译依赖,不会出现Python、Node版本兼容问题。执行命令npm uninstall node-sass && npm install sass即可,yarn环境对应替换为yarn remove node-sass && yarn add sass - 临时修复方案(不修改业务依赖):在CircleCI配置的
node/install-packages步骤前添加一条执行命令:
- run: name: 配置Python别名 command: sudo ln -s /usr/bin/python3 /usr/bin/python
同时可以在node/install-packages参数中指定Node版本为你之前构建正常的14.x版本,避免Node版本不兼容问题:
- node/install-packages: pkg-manager: yarn cache-key: "yarn.lock" node-version: '14'
- 兼容升级方案:将
node-sass升级到v6.0及以上版本,该版本适配Node 16,且依赖的node-gyp版本已支持Python3,无需额外配置环境
内容的提问来源于stack exchange,提问作者Jason FB
相关产品推荐
相关产品推荐

