根本解法是迁移到 dart-sass:卸载 node-sass,安装 sass,替换 require 和 api 调用,可彻底规避 python 2、node-gyp 编译及 binding.node 下载问题。

Windows 下 VSCode 中运行 node-sass 报 not found: python2,本质不是缺 Python 2,而是 npm 在找不到预编译二进制时自动 fallback 到本地编译——而本地编译依赖 Python 2.7(node-gyp 的硬要求),且必须是 2.7.x,不是 2.7.0 就不行。
为什么 VSCode 终端里 python --version 显示 3.x 还报错
VSCode 默认调用系统 PATH 中的 python 命令,但 node-gyp 在 Windows 上只认 python2 或注册表里明确标记为 Python 2 的路径。即使你装了 Python 3.12,node-gyp 仍会尝试执行 python2 并失败。
-
node-gyp不读取python --version输出,它只检查命令名是否为python2,或通过npm config get python获取显式配置 - VSCode 内置终端继承的是系统环境变量,但不会自动把
python2软链接映射过去(Windows 没有原生软链) - 某些公司策略禁用 Python 2 安装,导致连手动装都不可行
不装 Python 2 的可行解:跳过编译,直取二进制
绝大多数失败都卡在 Downloading binary from https://github.com/... 这一步超时或被拦截,而不是真要编译。只要让 node-sass 找到对应平台的 *_binding.node 文件即可。
- 确认你的 Node 版本:
node -v(比如v18.19.1),再查node-sass支持表,确定需要的 binding 版本号(如win32-x64-108) - 手动下载对应文件:
https://github.com/sass/node-sass/releases/download/v7.0.3/win32-x64-108_binding.node(注意 v7.0.3 和 108 要匹配) - 放入缓存目录:
%APPDATA%\npm-cache\node-sass\7.0.3\win32-x64-108_binding.node(路径不存在就新建) - 再运行
npm install node-sass@7.0.3,它会跳过下载直接校验并使用本地文件
VSCode 项目里永久生效的配置方式
避免每次重装都重复操作,把 Python 路径和镜像固化到项目级配置中:
- 在项目根目录运行:
npm config set python "C:\Python27\python.exe" --location=project(如果真装了 Python 2.7.18) - 或更稳妥地指定国内镜像:
npm config set sass-binary-site "https://npmmirror.com/mirrors/node-sass/" --location=project - VSCode 启动终端前会读取项目下的
.npmrc,所以建议把这些配置写入该文件,内容形如:python=C:\Python27\python.exe sass-binary-site=https://npmmirror.com/mirrors/node-sass/
真正省事的替代方案:换 dart-sass
node-sass 已于 2023 年 10 月正式归档(EOL),官方明确推荐迁移到 sass(即 Dart 实现版)。它不依赖 Python、不编译、跨平台一致,且 API 几乎兼容。
- 卸载:
npm uninstall node-sass - 安装:
npm install --save-dev sass - 修改构建脚本:把
require('node-sass')换成require('sass'),sass.render()参数基本不变,只有file/data和异步方式略有差异 - Webpack 用户注意:
sass-loaderv12+ 默认使用sass,无需额外配置;老版本需在 loader options 里加implementation: require('sass')
最易被忽略的一点:很多团队卡在“以为必须用 node-sass”,其实只是历史配置没更新。Dart Sass 的 renderSync 性能不输原生,且完全规避所有 Python / gyp / binding.node 问题——这才是 Windows + VSCode 下一劳永逸的解法。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











