Node.js (npm) refuses to find python even after %PYTHON% has been set
I figured out the most stable solution is to set python
npm internal value to actual path:
npm config set python C:\Programs\Python2.7\python2.7.exe
This skips all environment variable and %PATH%
crap and just starts the python wherever it's installed.
TL;DR Make a copy or alias of your python.exe with name python2.7.exe
My python 2.7 was installed as
D:\app\Python27\python.exe
I always got this error no matter how I set (and verified) PYTHON env variable:
gyp ERR! stack Error: Can't find Python executable "python2.7", you can set the PYTHON env variable.gyp ERR! stack at failNoPython (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:103:14)
The reason for this was that in node-gyp's configure.js the python executable was resolved like:
var python = gyp.opts.python || process.env.PYTHON || 'python'
And it turned out that gyp.opts.python had value 'python2.7' thus overriding process.env.PYTHON.
I resolved this by creating an alias for python.exe executable with name node-gyp was looking for:
D:\app\Python27>mklink python2.7.exe python.exe
You need admin rights for this operation.
Reopen your terminal after you set your environment variable in case of windows but in case of linux no need to restart terminal.