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

Rails资产预编译失败:node-sass依赖缺失Python环境问题

解决Ubuntu 20.04上Rails资产预编译时node-gyp找不到Python2的问题

方法一:临时指定node-gyp使用Python3

执行预编译命令前,通过环境变量强制node-gyp调用Python3:

export NODE_GYP_FORCE_PYTHON=$(which python3) && $HOME/.rbenv/bin/rbenv exec bundle exec rake assets:precompile

如果需要永久生效,把环境变量写入shell配置文件:

echo 'export NODE_GYP_FORCE_PYTHON=$(which python3)' >> ~/.bashrc
source ~/.bashrc

方法二:创建Python2软链接

Ubuntu 20.04仓库仍提供Python2.7,先安装再做软链接适配node-gyp的默认查找逻辑:

sudo apt update && sudo apt install python2.7
sudo ln -s /usr/bin/python2.7 /usr/bin/python2

方法三:升级node-sass到支持Python3的版本

旧版node-sass依赖的node-gyp仅支持Python2,将package.json中的node-sass升级到v4.12.0及以上(该版本开始兼容Python3),再重新安装依赖:

yarn upgrade node-sass@^4.12.0
# 用npm的话执行:npm update node-sass@^4.12.0

之后再执行资产预编译命令。

方法四:配置node-gyp全局使用Python3

查看当前node-gyp的Python配置:

node-gyp configure --python

若显示为Python2,手动设置为Python3:

node-gyp configure --python python3

或通过npm全局配置永久生效:

npm config set python python3

额外排查点

  • 对比两台服务器的node/npm/yarn版本,版本差异可能导致依赖处理逻辑不同
  • 复制另一台正常服务器的yarn.lock或package-lock.json到当前机器,重新安装依赖后再尝试预编译

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:02:07