it-swarm.com.ru

"Не удается найти исполняемый файл Python ..." - установка npm зависает

Я использую «npm install» для загрузки и компиляции всех зависимостей небольшого приложения для node.js, которое я написал. Файл "package.json", который я использую, является правильным и содержит всю необходимую информацию.

Один из устанавливаемых пакетов имеет зависимость "node-gyp", поэтому ранее я установил пакет "python2".

Теперь в определенный момент я начинаю получать сообщения об ошибках:

> node-gyp rebuild

gyp ERR! configure error
gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.
gyp ERR! stack     at failNoPython (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:103:14)
gyp ERR! stack     at /usr/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:42:11
gyp ERR! stack     at F (/usr/lib/node_modules/npm/node_modules/which/which.js:40:25)
gyp ERR! stack     at E (/usr/lib/node_modules/npm/node_modules/which/which.js:43:29)
gyp ERR! stack     at /usr/lib/node_modules/npm/node_modules/which/which.js:54:16
gyp ERR! stack     at FSReqWrap.oncomplete (fs.js:99:15)
gyp ERR! System Linux 3.18.9-200.fc21.x86_64
gyp ERR! command "node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /srv/visitor/node_modules/phantom/node_modules/dnode/node_modules/weak
gyp ERR! node -v v0.12.1
gyp ERR! node-gyp -v v1.0.3
gyp ERR! not ok
npm WARN optional dep failed, continuing [email protected]

Кажется, проблема в том, что переменная среды отсутствует. 

Может кто-то указать мне верное направление? Неважно, где я ищу в Интернете, там нет упоминания о переменной «PYTHON», только «PYTHONPATH» и тому подобное. Как правильно исправить это, чтобы я не получил эти ошибки?

ОБНОВЛЕНИЕ 1:

Следуя советам из этой ветки, я добавил эти команды перед выполнением «npm install»:

PYTHON=/usr/sbin/python2
export PYTHON

Теперь я получаю эту ошибку:

> node-gyp rebuild

gyp ERR! build error
gyp ERR! stack Error: not found: make
gyp ERR! stack     at F (/usr/lib/node_modules/npm/node_modules/which/which.js:40:28)
gyp ERR! stack     at E (/usr/lib/node_modules/npm/node_modules/which/which.js:43:29)
gyp ERR! stack     at /usr/lib/node_modules/npm/node_modules/which/which.js:54:16
gyp ERR! stack     at FSReqWrap.oncomplete (fs.js:99:15)
gyp ERR! System Linux 3.18.9-200.fc21.x86_64
gyp ERR! command "node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /srv/visitor/node_modules/phantom/node_modules/dnode/node_modules/weak
gyp ERR! node -v v0.12.1
gyp ERR! node-gyp -v v1.0.3
gyp ERR! not ok
npm WARN optional dep failed, continuing [email protected]

Я нахожу абсурдным, что там написано "... не найдено: сделай ...". Есть ли вероятность, что это так? Если да, то как правильно установить пакеты?

Честно говоря, я ничего не понимаю. Есть идеи?

8
dsljanus

Перво-наперво: я хочу поблагодарить всех, кто помог мне с моей проблемой, и особенно @adarsh.

Теперь реальная проблема заключалась в том, что мне не хватало «make» и «gcc». Сначала, когда сообщение компилятора подсказало мне это, я счел это абсурдом. Но имейте в виду, что это изображение, извлеченное из реестра Docker. 

Я добавил «pacman -S --needed --noconfirm make gcc» в мой Dockerfile, и процесс сборки завершился успешно.

Само собой разумеется, что мне также нужно было внести предложенные изменения в переменные среды.

2
dsljanus

Попробуйте запустить это

PYTHON=$PYTHON:/usr/bin/python
export PYTHON

Добавьте это в файл профиля (например, ~/.bash_profile и т.д. В зависимости от вашей оболочки), чтобы сделать его постоянным.

Если ваш питон не установлен в /usr/bin/python, тогда вы можете запустить which python, чтобы узнать, где он установлен.

4
adarsh

Это сработало для меня ..

node-gyp --python C:\Users\username\.windows-build-tools\python27\python.exe build

Нам нужно указатьpython.exeне только до папки установки.

1
hacker