macOS环境运行npm install触发Python3语法错误问题咨询
问题根因
该报错出现在原生依赖编译环节:旧版本node-gyp使用Python2语法编写代码(Python2中print是语句,可以直接接输出内容不需要括号),但当前npm默认调用的解释器是Python3,Python3要求print必须作为函数使用、参数要放在括号内,旧语法直接触发语法错误,导致依赖安装中断。
可直接落地的解决方法
- 优先升级全局node-gyp到适配Python3的最新版本,依次执行以下命令:
# 升级全局node-gyp npm install -g node-gyp@latest # 清除项目内旧的依赖缓存和锁文件 rm -rf node_modules package-lock.json # 重新安装依赖 npm install - 如果项目依赖锁死了旧版node-gyp无法升级,可以提前在本地安装Python2,再手动指定npm调用Python2的路径,命令格式如下:
配置完成后重新执行npm config set python 你本地Python2的可执行文件绝对路径npm install即可。 - 如果你使用nvm管理Node版本,直接切换到最新的LTS长期维护版Node即可,新版Node内置的node-gyp已经默认兼容Python3,切换命令如下:
nvm install --lts nvm use --lts # 切换完成后重新安装依赖 npm install
注意:如果是M系列芯片的Mac设备,执行上述操作前建议先安装Xcode命令行工具,避免后续其他原生依赖编译报错,安装命令:
xcode-select --install
内容的提问来源于stack exchange,提问作者Daniel Ef
相关产品推荐
相关产品推荐

