Yarn 安装抛出错误:gyp 动词 `which` 失败错误:未找到:python2

Rah*_*rma 3 node.js reactjs node-sass yarnpkg

在 React 项目中,我尝试运行“yarn install”,但它抛出以下错误:

\n
\n

gyp 动词which失败错误:未找到:python2

\n
\n

完整错误回溯:

\n
yarn install v1.22.4\nwarning package-lock.json found. Your project contains lock files generated by tools other than Yarn. It is advised not to mix package managers in order to avoid resolution inconsistencies caused by unsynchronized lock files. To clear this warning, remove package-lock.json.\n[1/4] Resolving packages...\n[2/4] Fetching packages...\ninfo fsevents@2.1.2: The platform "win32" is incompatible with this module.\ninfo "fsevents@2.1.2" is an optional dependency and failed compatibility check. Excluding it from installation.\ninfo fsevents@1.2.12: The platform "win32" is incompatible with this module.\ninfo "fsevents@1.2.12" is an optional dependency and failed compatibility check. Excluding it from installation.\n[3/4] Linking dependencies...\nwarning " > @coreui/coreui@3.0.0" has unmet peer dependency "perfect-scrollbar@^1.5.0".\nwarning " > @coreui/coreui@3.0.0" has unmet peer dependency "@popperjs/core@^2.0.6".\nwarning " > @coreui/react@2.5.7" has incorrect peer dependency "@coreui/coreui@^2.1.16".\nwarning " > @coreui/react@2.5.7" has unmet peer dependency "mutationobserver-shim@^0.3.3".\nwarning " > @testing-library/user-event@7.2.1" has unmet peer dependency "@testing-library/dom@>=5".\nwarning " > react-bootstrap-table-next@4.0.1" has unmet peer dependency "classnames@^2.2.5".\nwarning " > react-bootstrap-table-next@4.0.1" has unmet peer dependency "prop-types@^15.0.0".\nwarning "react-scripts > @typescript-eslint/eslint-plugin > tsutils@3.17.1" has unmet peer dependency "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.\n6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta".\n[4/4] Building fresh packages...\n[-/4] \xe2\xa1\x80 waiting...\n[-/4] \xe2\xa1\x80 waiting...\n[3/4] \xe2\xa1\x80 node-sass\nerror C:\\Users\\Rahul\\yantra-front\\cargo_frontend\\cargo-app\\node_modules\\node-sass: Command failed.\nExit code: 1\nCommand: node scripts/build.js\nArguments:\nDirectory: C:\\Users\\Rahul\\yantra-front\\cargo_frontend\\cargo-app\\node_modules\\node-sass\nOutput:\nBinary found at C:\\Users\\Rahul\\yantra-front\\cargo_frontend\\cargo-app\\node_modules\\node-sass\\vendor\\win32-x64-72\\binding.node\nTesting binary\nBinary has a problem: Error: Cannot find module './_baseClone'\nRequire stack:\n- C:\\Users\\Rahul\\yantra-front\\cargo_frontend\\cargo-app\\node_modules\\lodash\\cloneDeep.js\n- C:\\Users\\Rahul\\yantra-front\\cargo_frontend\\cargo-app\\node_modules\\node-sass\\lib\\index.js\n- C:\\Users\\Rahul\\yantra-front\\cargo_frontend\\cargo-app\\node_modules\\node-sass\\scripts\\build.js\n    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:957:15)\n    at Function.Module._load (internal/modules/cjs/loader.js:840:27)\n    at Module.require (internal/modules/cjs/loader.js:1019:19)\n    at require (internal/modules/cjs/helpers.js:77:18)\n    at Object.<anonymous> (C:\\Users\\Rahul\\yantra-front\\cargo_frontend\\cargo-app\\node_modules\\lodash\\cloneDeep.js:1:17)\n    at Module._compile (internal/modules/cjs/loader.js:1133:30)\n    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1153:10)\n    at Module.load (internal/modules/cjs/loader.js:977:32)\n    at Function.Module._load (internal/modules/cjs/loader.js:877:14)\n    at Module.require (internal/modules/cjs/loader.js:1019:19) {\n  code: 'MODULE_NOT_FOUND',\n  requireStack: [\n    'C:\\\\Users\\\\Rahul\\\\yantra-front\\\\cargo_frontend\\\\cargo-app\\\\node_modules\\\\lodash\\\\cloneDeep.js',\n    'C:\\\\Users\\\\Rahul\\\\yantra-front\\\\cargo_frontend\\\\cargo-app\\\\node_modules\\\\node-sass\\\\lib\\\\index.js',\n    'C:\\\\Users\\\\Rahul\\\\yantra-front\\\\cargo_frontend\\\\cargo-app\\\\node_modules\\\\node-sass\\\\scripts\\\\build.js'\n  ]\n}\nBuilding the binary locally\nBuilding: C:\\Program Files\\nodejs\\node.exe C:\\Users\\Rahul\\yantra-front\\cargo_frontend\\cargo-app\\node_modules\\node-gyp\\bin\\node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libs\nass_library=\ngyp info it worked if it ends with ok\ngyp verb cli [\ngyp verb cli   'C:\\\\Program Files\\\\nodejs\\\\node.exe',\ngyp verb cli   'C:\\\\Users\\\\Rahul\\\\yantra-front\\\\cargo_frontend\\\\cargo-app\\\\node_modules\\\\node-gyp\\\\bin\\\\node-gyp.js',\ngyp verb cli   'rebuild',\ngyp verb cli   '--verbose',\ngyp verb cli   '--libsass_ext=',\ngyp verb cli   '--libsass_cflags=',\ngyp verb cli   '--libsass_ldflags=',\ngyp verb cli   '--libsass_library='\ngyp verb cli ]\ngyp info using node-gyp@3.8.0\ngyp info using node@12.16.3 | win32 | x64\ngyp verb command rebuild []\ngyp verb command clean []\ngyp verb clean removing "build" directory\ngyp verb command configure []\ngyp verb check python checking for Python executable "python2" in the PATH\ngyp verb `which` failed Error: not found: python2\ngyp verb `which` failed     at getNotFoundError (C:\\Users\\Rahul\\yantra-front\\cargo_frontend\\cargo-app\\node_modules\\which\\which.js:13:12)\ngyp verb `which` failed     at F (C:\\Users\\Rahul\\yantra-front\\cargo_frontend\\cargo-app\\node_modules\\which\\which.js:68:19)\ngyp verb `which` failed     at E (C:\\Users\\Rahul\\yantra-front\\cargo_frontend\\cargo-app\\node_modules\\which\\which.js:80:29)\ngyp verb `which` failed     at C:\\Users\\Rahul\\yantra-front\\cargo_frontend\\cargo-app\\node_modules\\which\\which.js:89:16\ngyp verb `which` failed     at C:\\Users\\Rahul\\yantra-front\\cargo_frontend\\cargo-app\\node_modules\\isexe\\index.js:42:5\ngyp verb `which` failed     at C:\\Users\\Rahul\\yantra-front\\cargo_frontend\\cargo-app\\node_modules\\isexe\\windows.js:36:5\ngyp verb `which` failed     at FSReqCallback.oncomplete (fs.js:167:21)\ngyp verb `which` failed  python2 Error: not found: python2\ngyp verb `which` failed     at getNotFoundError (C:\\Users\\Rahul\\yantra-front\\cargo_frontend\\cargo-app\\node_modules\\which\\which.js:13:12)\ngyp verb `which` failed     at F (C:\\Users\\Rahul\\yantra-front\\cargo_frontend\\cargo-app\\node_modules\\which\\which.js:68:19)\ngyp verb `which` failed     at E (C:\\Users\\Rahul\\yantra-front\\cargo_frontend\\cargo-app\\node_modules\\which\\which.js:80:29)\ngyp verb `which` failed     at C:\\Users\\Rahul\\yantra-front\\cargo_frontend\\cargo-app\\node_modules\\which\\which.js:89:16\ngyp verb `which` failed     at C:\\Users\\Rahul\\yantra-front\\cargo_frontend\\cargo-app\\node_modules\\isexe\\index.js:42:5\ngyp verb `which` failed     at C:\\Users\\Rahul\\yantra-front\\cargo_frontend\\cargo-app\\node_modules\\isexe\\windows.js:36:5\ngyp verb `which` failed     at FSReqCallback.oncomplete (fs.js:167:21) {\ngyp verb `which` failed   code: 'ENOENT'\ngyp verb `which` failed }\ngyp verb check python checking for Python executable "python" in the PATH\ngyp verb `which` succeeded python C:\\Users\\Rahul\\AppData\\Local\\Programs\\Python\\Python37\\python.EXE\ngyp ERR! configure error\ngyp ERR! stack Error: Command failed: C:\\Users\\Rahul\\AppData\\Local\\Programs\\Python\\Python37\\python.EXE -c import sys; print "%s.%s.%s" % sys.version_info[:3];\ngyp ERR! stack   File "<string>", line 1\ngyp ERR! stack     import sys; print "%s.%s.%s" % sys.version_info[:3];\ngyp ERR! stack                                ^\ngyp ERR! stack SyntaxError: invalid syntax\ngyp ERR! stack\ngyp ERR! stack     at ChildProcess.exithandler (child_process.js:303:12)\ngyp ERR! stack     at ChildProcess.emit (events.js:310:20)\ngyp ERR! stack     at maybeClose (internal/child_process.js:1021:16)\ngyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5)\ngyp ERR! System Windows_NT 10.0.18362\ngyp ERR! command "C:\\\\Program Files\\\\nodejs\\\\node.exe" "C:\\\\Users\\\\Rahul\\\\yantra-front\\\\cargo_frontend\\\\cargo-app\\\\node_modules\\\\node-gyp\\\\bin\\\\node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cfl\nags=" "--libsass_ldflags=" "--libsass_library="\ngyp ERR! cwd C:\\Users\\Rahul\\yantra-front\\cargo_frontend\\cargo-app\\node_modules\\node-sass\ngyp ERR! node -v v12.16.3\ngyp ERR! node-gyp -v v3.8.0\n
Run Code Online (Sandbox Code Playgroud)\n

而我的路径中有 python 3 和 2

\n
C:\\Python27;C:\\Python27\\Tools\\Scripts\nC:\\Users\\Rahul\\.windows-build-tools\\python27\\\nC:\\Users\\Rahul\\AppData\\Local\\Programs\\Python\\Python37\\\nC:\\Users\\Rahul\\AppData\\Local\\Programs\\Python\\Python37\\Scripts\\\nC:\\Users\\Rahul\\AppData\\Roaming\\npm\nC:\\Users\\Rahul\\AppData\\Local\\Yarn\\bin\nC:\\Users\\Rahul\\AppData\\Local\\Microsoft\\WindowsApps\n%USERPROFILE%\\AppData\\Local\\Microsoft\\WindowsApps\n
Run Code Online (Sandbox Code Playgroud)\n

我无法运行该项目。请帮忙!!

\n

包.json

\n
{\n  "name": "cargo-app",\n  "version": "0.1.0",\n  "private": true,\n  "dependencies": {\n    "@coreui/coreui": "^3.0.0",\n    "@coreui/react": "^2.5.7",\n    "@fortawesome/fontawesome-svg-core": "^1.2.28",\n    "@fortawesome/free-solid-svg-icons": "^5.13.0",\n    "@fortawesome/react-fontawesome": "^0.1.9",\n    "@testing-library/jest-dom": "^4.2.4",\n    "@testing-library/react": "^9.3.2",\n    "@testing-library/user-event": "^7.1.2",\n    "axios": "^0.19.2",\n    "history": "^4.10.1",\n    "node-sass": "^4.14.1",\n    "react": "^16.13.1",\n    "react-bootstrap-table-next": "^4.0.1",\n    "react-dom": "^16.13.1",\n    "react-redux": "^7.2.0",\n    "react-router-dom": "^5.1.2",\n    "react-scripts": "3.4.1",\n    "react-toastify": "^6.0.0",\n    "reactjs-localstorage": "^0.0.8",\n    "reactstrap": "^8.4.1",\n    "redux": "^4.0.5",\n    "redux-thunk": "^2.3.0"\n  },\n  "scripts": {\n    "start": "react-scripts start",\n    "build": "react-scripts build",\n    "test": "react-scripts test",\n    "eject": "react-scripts eject"\n  },\n  "eslintConfig": {\n    "extends": "react-app"\n  },\n  "browserslist": {\n    "production": [\n      ">0.2%",\n      "not dead",\n      "not op_mini all"\n    ],\n    "development": [\n      "last 1 chrome version",\n      "last 1 firefox version",\n      "last 1 safari version"\n    ]\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

Ant*_*off 6

此 Node 依赖项依赖于 Python 2,而它在您的计算机上找到的 Python 可执行文件是 Python 3。

\n\n

你可以看到它尝试print "%s.%s.%s"\xe2\x80\x94,这是Python 2语法,在Python 3中无效。

\n\n

您的项目很可能依赖于旧版本的node-sass,而后者又依赖于过时版本的node-gyp。尝试在依赖项中指定较新版本的node-sass。

\n\n

作为替代方案,您还可以尝试此票证中概述的解决方法,将以下内容添加到您的 package.json 中:

\n\n
  "resolutions": {\n    "node-sass/node-gyp": "^6.0.0"\n  },\n
Run Code Online (Sandbox Code Playgroud)\n\n

不过,最好先看看是否可以切换到 Node-sass 的更新版本。

\n