我正在尝试运行以下命令:npm install -g bower gulp cordova ionic tsd@next karma-cli protractor node-gyp coffee-script js-beautify typescript npm-check
我已经安装了Python,Visual Studio Express和node-gyp,所以我觉得我很高兴,但是我收到了以下错误:
关于"Can't find Python executable "python", you can set the PYTHON env variable."
错误,我有点困惑,因为我已经像这样设置了PYTHON环境变量:
有什么想法吗?
答案 0 :(得分:12)
尝试:
使用Microsoft的windows-build-tools安装所有必需的工具和配置,方法是从提升的 PowerShell 运行npm install -g windows-build-tools
(以管理员身份运行)。
答案 1 :(得分:11)
你必须将python添加到PATH变量中。您可以做的一件事是现在编辑您的路径变量并添加
;%PYTHON%;
你的变量PYTHON应该指向python安装的根目录。
答案 2 :(得分:8)
我安装了python2.7来解决这个问题。我希望可以帮到你。
答案 3 :(得分:7)
https://github.com/nodejs/node-gyp#on-windows
尝试
npm config set python D:\Library\Python\Python27\python.exe
答案 4 :(得分:5)
只需在具有管理员权限的命令下运行
npm install --global --production windows-build-tools
答案 5 :(得分:3)
您正在以管理员身份运行命令提示符。您只为您的用户定义了PYTHON。你需要在底部定义它"系统变量"部分。
此外,您应该只将变量指向文件夹,而不是直接指向可执行文件。
答案 6 :(得分:1)
以下解决方案之一将为您服务:
c:\Python\27\python.exe
或set PYTHON=D:\Python\bin\Python.exe
npm config set python D:\Library\Python\Python27\python.exe
npm --add-python-to-path='true' --debug install --global windows-build-tools
(必须通过“以管理员身份运行” PowerShell执行)如果没有,请尝试自行安装所需的软件包(我这样做是node-sass
,在手动安装后,整个npm install
已成功完成
答案 7 :(得分:1)
我最近在使用 node:16-alpine
作为基础映像的 dockerfile 中遇到了这个问题。我添加了以下运行命令来解决这个问题:
FROM node:alpine as build-stage
RUN apk add --no-cache python3 py3-pip make g++
这里,两个标签 node:alpine
和 node:16-alpine
是相同的。
答案 8 :(得分:0)
最简单的方法是让NPM为您做所有事情,
var permissionname = 'insert, update, delete, list' // post data
var json = { // db json
"_id": "5ca6d98c8ba48b0c2028c24b",
"user_id": "5c8740860c5dcf6c615c1ba3",
"permissions": [
{
"dashboard": [
"bar chart",
"pie chart"
],
"product management": [
"update",
"delete",
"list"
]
}
]
}
if (modulename in json.permissions[0]) {
console.log('modulename exists')
var moduleArray = json.permissions[0][modulename]
if (moduleArray.includes(permissionname)) {
console.log('permissionname exists') // Don't to do anything on db
} else {
var splitedPermission = permissionname.split(',')
splitedPermission.forEach(result => {
json.permissions[0][modulename].push(result.trim())
})
console.log(json.permissions[0][modulename])
}
} else {
var arrayOfPermissions = permissionname.split(',').map(permissions => permissions.trim())
json.permissions[0][modulename] = arrayOfPermissions
}
console.log(JSON.stringify(json))
答案 9 :(得分:0)
我的问题是 Node v16 的使用。
我回到了 Node v12(v14 可能也不错)并且它工作正常。