Rahul Sharma
Rahul Sharma

Reputation: 2495

Yarn install throws error: gyp verb `which` failed Error: not found: python2

In a React Project I am trying to run "yarn install" but it is throwing the following error:

gyp verb which failed Error: not found: python2

Full Error traceback:

yarn install v1.22.4
warning 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.
[1/4] Resolving packages...
[2/4] Fetching packages...
info [email protected]: The platform "win32" is incompatible with this module.
info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
info [email protected]: The platform "win32" is incompatible with this module.
info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
warning " > @coreui/[email protected]" has unmet peer dependency "perfect-scrollbar@^1.5.0".
warning " > @coreui/[email protected]" has unmet peer dependency "@popperjs/core@^2.0.6".
warning " > @coreui/[email protected]" has incorrect peer dependency "@coreui/coreui@^2.1.16".
warning " > @coreui/[email protected]" has unmet peer dependency "mutationobserver-shim@^0.3.3".
warning " > @testing-library/[email protected]" has unmet peer dependency "@testing-library/dom@>=5".
warning " > [email protected]" has unmet peer dependency "classnames@^2.2.5".
warning " > [email protected]" has unmet peer dependency "prop-types@^15.0.0".
warning "react-scripts > @typescript-eslint/eslint-plugin > [email protected]" 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.
6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta".
[4/4] Building fresh packages...
[-/4] ⡀ waiting...
[-/4] ⡀ waiting...
[3/4] ⡀ node-sass
error C:\Users\Rahul\yantra-front\cargo_frontend\cargo-app\node_modules\node-sass: Command failed.
Exit code: 1
Command: node scripts/build.js
Arguments:
Directory: C:\Users\Rahul\yantra-front\cargo_frontend\cargo-app\node_modules\node-sass
Output:
Binary found at C:\Users\Rahul\yantra-front\cargo_frontend\cargo-app\node_modules\node-sass\vendor\win32-x64-72\binding.node
Testing binary
Binary has a problem: Error: Cannot find module './_baseClone'
Require stack:
- C:\Users\Rahul\yantra-front\cargo_frontend\cargo-app\node_modules\lodash\cloneDeep.js
- C:\Users\Rahul\yantra-front\cargo_frontend\cargo-app\node_modules\node-sass\lib\index.js
- C:\Users\Rahul\yantra-front\cargo_frontend\cargo-app\node_modules\node-sass\scripts\build.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:957:15)
    at Function.Module._load (internal/modules/cjs/loader.js:840:27)
    at Module.require (internal/modules/cjs/loader.js:1019:19)
    at require (internal/modules/cjs/helpers.js:77:18)
    at Object.<anonymous> (C:\Users\Rahul\yantra-front\cargo_frontend\cargo-app\node_modules\lodash\cloneDeep.js:1:17)
    at Module._compile (internal/modules/cjs/loader.js:1133:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1153:10)
    at Module.load (internal/modules/cjs/loader.js:977:32)
    at Function.Module._load (internal/modules/cjs/loader.js:877:14)
    at Module.require (internal/modules/cjs/loader.js:1019:19) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    'C:\\Users\\Rahul\\yantra-front\\cargo_frontend\\cargo-app\\node_modules\\lodash\\cloneDeep.js',
    'C:\\Users\\Rahul\\yantra-front\\cargo_frontend\\cargo-app\\node_modules\\node-sass\\lib\\index.js',
    'C:\\Users\\Rahul\\yantra-front\\cargo_frontend\\cargo-app\\node_modules\\node-sass\\scripts\\build.js'
  ]
}
Building the binary locally
Building: 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
ass_library=
gyp info it worked if it ends with ok
gyp verb cli [
gyp verb cli   'C:\\Program Files\\nodejs\\node.exe',
gyp verb cli   'C:\\Users\\Rahul\\yantra-front\\cargo_frontend\\cargo-app\\node_modules\\node-gyp\\bin\\node-gyp.js',
gyp verb cli   'rebuild',
gyp verb cli   '--verbose',
gyp verb cli   '--libsass_ext=',
gyp verb cli   '--libsass_cflags=',
gyp verb cli   '--libsass_ldflags=',
gyp verb cli   '--libsass_library='
gyp verb cli ]
gyp info using [email protected]
gyp info using [email protected] | win32 | x64
gyp verb command rebuild []
gyp verb command clean []
gyp verb clean removing "build" directory
gyp verb command configure []
gyp verb check python checking for Python executable "python2" in the PATH
gyp verb `which` failed Error: not found: python2
gyp verb `which` failed     at getNotFoundError (C:\Users\Rahul\yantra-front\cargo_frontend\cargo-app\node_modules\which\which.js:13:12)
gyp verb `which` failed     at F (C:\Users\Rahul\yantra-front\cargo_frontend\cargo-app\node_modules\which\which.js:68:19)
gyp verb `which` failed     at E (C:\Users\Rahul\yantra-front\cargo_frontend\cargo-app\node_modules\which\which.js:80:29)
gyp verb `which` failed     at C:\Users\Rahul\yantra-front\cargo_frontend\cargo-app\node_modules\which\which.js:89:16
gyp verb `which` failed     at C:\Users\Rahul\yantra-front\cargo_frontend\cargo-app\node_modules\isexe\index.js:42:5
gyp verb `which` failed     at C:\Users\Rahul\yantra-front\cargo_frontend\cargo-app\node_modules\isexe\windows.js:36:5
gyp verb `which` failed     at FSReqCallback.oncomplete (fs.js:167:21)
gyp verb `which` failed  python2 Error: not found: python2
gyp verb `which` failed     at getNotFoundError (C:\Users\Rahul\yantra-front\cargo_frontend\cargo-app\node_modules\which\which.js:13:12)
gyp verb `which` failed     at F (C:\Users\Rahul\yantra-front\cargo_frontend\cargo-app\node_modules\which\which.js:68:19)
gyp verb `which` failed     at E (C:\Users\Rahul\yantra-front\cargo_frontend\cargo-app\node_modules\which\which.js:80:29)
gyp verb `which` failed     at C:\Users\Rahul\yantra-front\cargo_frontend\cargo-app\node_modules\which\which.js:89:16
gyp verb `which` failed     at C:\Users\Rahul\yantra-front\cargo_frontend\cargo-app\node_modules\isexe\index.js:42:5
gyp verb `which` failed     at C:\Users\Rahul\yantra-front\cargo_frontend\cargo-app\node_modules\isexe\windows.js:36:5
gyp verb `which` failed     at FSReqCallback.oncomplete (fs.js:167:21) {
gyp verb `which` failed   code: 'ENOENT'
gyp verb `which` failed }
gyp verb check python checking for Python executable "python" in the PATH
gyp verb `which` succeeded python C:\Users\Rahul\AppData\Local\Programs\Python\Python37\python.EXE
gyp ERR! configure error
gyp 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];
gyp ERR! stack   File "<string>", line 1
gyp ERR! stack     import sys; print "%s.%s.%s" % sys.version_info[:3];
gyp ERR! stack                                ^
gyp ERR! stack SyntaxError: invalid syntax
gyp ERR! stack
gyp ERR! stack     at ChildProcess.exithandler (child_process.js:303:12)
gyp ERR! stack     at ChildProcess.emit (events.js:310:20)
gyp ERR! stack     at maybeClose (internal/child_process.js:1021:16)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5)
gyp ERR! System Windows_NT 10.0.18362
gyp 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
ags=" "--libsass_ldflags=" "--libsass_library="
gyp ERR! cwd C:\Users\Rahul\yantra-front\cargo_frontend\cargo-app\node_modules\node-sass
gyp ERR! node -v v12.16.3
gyp ERR! node-gyp -v v3.8.0

Whereas I have both python 3 as well as 2 in my path

C:\Python27;C:\Python27\Tools\Scripts
C:\Users\Rahul\.windows-build-tools\python27\
C:\Users\Rahul\AppData\Local\Programs\Python\Python37\
C:\Users\Rahul\AppData\Local\Programs\Python\Python37\Scripts\
C:\Users\Rahul\AppData\Roaming\npm
C:\Users\Rahul\AppData\Local\Yarn\bin
C:\Users\Rahul\AppData\Local\Microsoft\WindowsApps
%USERPROFILE%\AppData\Local\Microsoft\WindowsApps

I am failing to run the project. Please Help!!

package.json

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

Upvotes: 3

Views: 7820

Answers (1)

Anton Strogonoff
Anton Strogonoff

Reputation: 34112

This Node dependency relies on Python 2, while the Python executable it found on your machine is Python 3.

You can see that it tries to print "%s.%s.%s"—that is Python 2 syntax, invalid in Python 3.

It is likely that your project depends on an old version of node-sass, which in turn relies on an outdated version of node-gyp. Try specifying a newer version of node-sass in your dependencies.

As an alternative, you could also attempt a workaround someone outlined in this ticket, adding the following to your package.json:

  "resolutions": {
    "node-sass/node-gyp": "^6.0.0"
  },

However, it’s better to see if you can switch to an updated version of node-sass first.

Upvotes: 8

Related Questions