Node GYP e porque do erro failPythonVersion

Para quem desenvolve em ambiente NodeJs, talvez já conheça, ou tenha se deparado com o erro de node GYP mais ou menos assim:

[Erro do Node-GYP failPythonVersion]
1
2
3
4
5
6
7
8
9
10
11
12
gyp ERR! configure error                              
gyp ERR! stack Error: Python executable "python" is v3.1,
which is not supported by gyp.
gyp ERR! stack You can pass the --python switch to point
to Python >= v2.5.0 & < 3.0.0.
gyp ERR! stack at failPythonVersion (...)
gyp ERR! stack
[...]
npm ERR! error rolling back errno: 50,
npm ERR! error rolling back code: 'EPERM',
npm ERR! error rolling back path: 'path-do-projeto\\node_modules\\nome-do-modulo\\Makefile
npm ERR! not ok code 0

Ok, mas OQUE é o Node-GYP?

O Node-GYP é uma ferramenta de command line para compilar addons nativos (em C/C++) para Node.JS.

A maioria das pessoas nem sabe que ele existe, até dar pau em algum módulo :P

E por que dá o erro failPythonVersion? Como resolver?

Bom, o erro é autoexplicativo: Python executable “python” is v3.1,
which is not supported by gyp. You can pass the –python switch to point
to Python >= v2.5.0 & < 3.0.0.
ou seja: o problema está na versão do Python. O GYP só aceita PIP menor que 3.0.0.

No Readme.md do projeto, vemos que a versão indicada é a 2.7. Portanto, basta ir até a página de download do Python e baixar a versão 2.7.9.

Durante a instalação, confira se ‘Add python var to PATH’ está marcado, caso use Windows.

Se você precisar do Python 3.x.x, você pode setar o caminho do 2.7, tendo os 2 instalados!

Basta rodar

[Setando Python 2.7.9 para Node-GYP e NPM]
1
npm config set python caminho/do/python-2.7.9

E pronto :)

Espero ter ajudado.