2015-03-31 4 views
8

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

Один из пакетов, которые должны быть установлены, имеет «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» и тому подобное. Каков правильный способ исправить это, чтобы я не получил эти ошибки?

UPDATE 1:

После выполнения рекомендации из этой темы я добавил эти команды перед выполнением "НОЙ установка":

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] 

Мне кажется абсурдным, что он говорит: «... не нашел: make ...». Есть ли такая возможность? Если да, то почему пакеты устанавливаются правильно?

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

+0

Вам необходимо установить переменную среды PYTHON. То, что когда-либо было в этой переменной, будет использоваться. Неважно, что такое PYTHONPATH. – adarsh

+0

@adarsh ​​То, что я могу сказать. Не могли бы вы рассказать? Если вы выберете ответ, я продолжу. – dsljanus

+0

какая ОС вы используете? как вы установили python2? попробуйте выполнить его в командной строке сначала – irqed

ответ

2

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

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

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

Разумеется, мне также необходимо внести предлагаемые изменения в переменные среды.

+0

Где нам нужно добавить строку: pacman -S --needed --noconfirm make gcc – iamnewuser

4

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

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

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

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

+0

Попробует и отчитается КАК МОЖНО СКОРЕЕ. – dsljanus

+0

Не работает. Он создает эту ошибку: «/ bin/sh: строка 0: export:':/usr/bin/python »: не действительный идентификатор». Кроме того, при запуске «python» в нем говорится, что в пути не может быть найден «python». – dsljanus

+1

О, извините, я ошибся во второй строке. Используйте 'export PYTHON'. Знак $ не должен использоваться. Я отредактирую ответ – adarsh

-3

В CMD

если локальный на диске:npm install express-generator

#npm install express-generator -g 
#express --ejs . 

выбрать да

#y 
1

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

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

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

Смежные вопросы