Node.js 종속성을 위해 Windows에서 Python 실행


226

Node.js 코드베이스에 들어가기 위해 NPM을 통해 몇 가지 종속성, 즉 jQuery를 다운로드해야합니다.

을 실행하려고하면 npm install jquery이 오류가 계속 발생합니다.

Your environment has been set up for using Node.js 0.8.21 (x64) and NPM

C:\Users\Matt Cashatt>npm install jquery
npm http GET https://registry.npmjs.org/jquery
npm http 304 https://registry.npmjs.org/jquery
npm http GET https://registry.npmjs.org/jsdom
npm http GET https://registry.npmjs.org/xmlhttprequest
npm http GET https://registry.npmjs.org/htmlparser/1.7.6
npm http GET https://registry.npmjs.org/location/0.0.1
npm http GET https://registry.npmjs.org/navigator
npm http GET https://registry.npmjs.org/contextify
npm http 304 https://registry.npmjs.org/htmlparser/1.7.6
npm http 304 https://registry.npmjs.org/xmlhttprequest
npm http 304 https://registry.npmjs.org/location/0.0.1
npm http 304 https://registry.npmjs.org/navigator
npm http 304 https://registry.npmjs.org/jsdom
npm http 304 https://registry.npmjs.org/contextify
npm http GET https://registry.npmjs.org/bindings
npm http GET https://registry.npmjs.org/cssom
npm http GET https://registry.npmjs.org/cssstyle
npm http GET https://registry.npmjs.org/request
npm http 304 https://registry.npmjs.org/bindings

> contextify@0.1.4 install C:\Users\Matt Cashatt\node_modules\jquery\node_module
s\contextify
> node-gyp rebuild


C:\Users\Matt Cashatt\node_modules\jquery\node_modules\contextify>node "C:\Progr
am Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\b
in\node-gyp.js" rebuild
npm http 304 https://registry.npmjs.org/cssstyle
npm http 304 https://registry.npmjs.org/cssom
npm http 304 https://registry.npmjs.org/request
gyp ERR! configure error
gyp ERR! stack Error: Can't find Python executable "python", you can set the PYT
HON env variable.
gyp ERR! stack     at failNoPython (C:\Program Files\nodejs\node_modules\npm\nod
e_modules\node-gyp\lib\configure.js:113:14)
gyp ERR! stack     at C:\Program Files\nodejs\node_modules\npm\node_modules\node
-gyp\lib\configure.js:82:11
gyp ERR! stack     at Object.oncomplete (fs.js:297:15)
gyp ERR! System Windows_NT 6.1.7601
gyp ERR! command "node" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modu
les\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd C:\Users\Matt Cashatt\node_modules\jquery\node_modules\contextify
gyp ERR! node -v v0.8.21
gyp ERR! node-gyp -v v0.8.4
gyp ERR! not ok
npm ERR! error rolling back Error: ENOTEMPTY, rmdir 'C:\Users\Matt Cashatt\node_
modules\jquery\node_modules\jsdom\node_modules\request\tests'
npm ERR! error rolling back  jquery@1.8.3 { [Error: ENOTEMPTY, rmdir 'C:\Users\M
att Cashatt\node_modules\jquery\node_modules\jsdom\node_modules\request\tests']
npm ERR! error rolling back   errno: 53,
npm ERR! error rolling back   code: 'ENOTEMPTY',
npm ERR! error rolling back   path: 'C:\\Users\\Matt Cashatt\\node_modules\\jque
ry\\node_modules\\jsdom\\node_modules\\request\\tests' }
npm ERR! contextify@0.1.4 install: `node-gyp rebuild`
npm ERR! `cmd "/c" "node-gyp rebuild"` failed with 1
npm ERR!
npm ERR! Failed at the contextify@0.1.4 install script.
npm ERR! This is most likely a problem with the contextify package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls contextify
npm ERR! There is likely additional logging output above.

npm ERR! System Windows_NT 6.1.7601
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nod
ejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "jquery"
npm ERR! cwd C:\Users\Matt Cashatt
npm ERR! node -v v0.8.21
npm ERR! npm -v 1.2.11
npm ERR! code ELIFECYCLE
npm ERR! Error: ENOENT, lstat 'C:\Users\Matt Cashatt\node_modules\jquery\node_mo
dules\jsdom\node_modules\request\tests\test-pipes.js'
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>

npm ERR! System Windows_NT 6.1.7601
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nod
ejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "jquery"
npm ERR! cwd C:\Users\Matt Cashatt
npm ERR! node -v v0.8.21
npm ERR! npm -v 1.2.11
npm ERR! path C:\Users\Matt Cashatt\node_modules\jquery\node_modules\jsdom\node_
modules\request\tests\test-pipes.js
npm ERR! fstream_path C:\Users\Matt Cashatt\node_modules\jquery\node_modules\jsd
om\node_modules\request\tests\test-pipes.js
npm ERR! fstream_type File
npm ERR! fstream_class FileWriter
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! fstream_stack C:\Program Files\nodejs\node_modules\npm\node_modules\fst
ream\lib\writer.js:284:26
npm ERR! fstream_stack Object.oncomplete (fs.js:297:15)
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     C:\Users\Matt Cashatt\npm-debug.log
npm ERR! not ok code 0

C:\Users\Matt Cashatt>

실패한 Python 설치로 인한 것 같습니다. 글쎄, 파이썬을 설치하고 변수를 설정 한 다음 재부팅했지만 여전히 오류가 발생했습니다.

내가 잃어버린 것에 대한 단서가 있습니까?


1
이미지 대신 텍스트를 텍스트로 붙여 넣을 수 있습니까? 읽기가 어려우며 (특히 이미 저해상도 비트 맵 글꼴이 축소되어 있기 때문에) 복사 할 수 없습니다.
abarnert

1
더 중요하게는 : 재부팅하기 전에 환경 변수를 어떻게 설정 했습니까? PYTHON=C:\Python27\Python.execmd 창에서 방금 수행 한 후 다시 부팅 한 경우 설정이 손실되었습니다.
abarnert

7
또한 어떤 Python 버전을 설치 했습니까? 이전 버전의 waf 및 gyp에는 2.x가 필요했지만 그것에 대해 아무 말도하지 않았으며 3.x를 대신 설치하면 모든 종류의 신비한 오류가 발생합니다.
abarnert

귀하의 의견에 감사드립니다. 텍스트 형식으로 오류를 게시했습니다. 나는 V2.7를 사용하고
매트 Cashatt을

"하지만 더 중요한"질문에 대답하십시오. 왜냐하면 본문에서 알 수 있듯이 중요하기 때문입니다. 이것을 직접 테스트하고 싶을 수도 있습니다. cmd.exe창에서 npm명령을 시도하기 전에 파이썬 인터프리터를 시작 python하거나 %PYTHON%시작합니까? 그렇지 않은 경우 올바르게 설정하지 않은 것입니다.
abarnert

답변:


132

문제는 환경 변수를 설정 하지 않았다는 것 입니다.

오류는 분명히 이것을 말합니다 :

gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.

그리고 당신의 의견에서, 당신은 이것을했다고 말합니다 :

set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib

훌륭하지만 PYTHON변수를 설정하지 않고 변수를 설정합니다 PYTHONPATH.


한편, set명령을 사용 하면 현재 cmd세션 에만 영향을줍니다 . 그 후에 재부팅하면, 말했듯 cmd이 변수가 설정되어 있지 않은 완전히 새로운 세션으로 끝납니다 .

환경 변수를 영구적으로 설정하는 방법은 몇 가지가 있습니다. XP의 시스템 제어판에서 가장 쉬운 방법은 Vista와 7에서 다시, 8에서 다시 다르지만 Google에서는 가능합니다.

또는 그 사이에서 재부팅하지 않고 명령 set바로 전에 수행하십시오 npm.


설정 스크립트가하려고하는 것과 똑같은 일을 수행하여 올바르게 수행했는지 테스트 할 수 있습니다 : 실행하기 전에 실행 npm해보십시오 %PYTHON%. 올바르게 수행했다면 파이썬 인터프리터 (즉시 종료 할 수 있음)를 얻게됩니다. 오류가 발생하면 제대로 수행하지 않은 것입니다.


이것에는 두 가지 문제가 있습니다 :

set PYTHON=%PYTHON%;D:\Python

먼저로 설정 PYTHON합니다 ;D:\Python. 이 세미콜론은 세미콜론으로 구분 된 경로 목록 ( PATH또는 같은) PYTHONPATH에는 적합하지만 같은 단일 값에는 적합하지 않습니다 PYTHON. 마찬가지로 기존 값에 새 값을 추가하는 것은 경로 목록에 다른 경로를 추가하지만 단일 값이 아닌 다른 경로를 추가하려는 경우 원하는 것입니다. 그래서 당신은 단지 원합니다 set PYTHON=D:\Python.

둘째, D:\Python파이썬 인터프리터의 경로가 아닙니다. 이 같은 뭔가 D:\Python\Python.exe, 또는 D:\Python\bin\Python.exe. 올바른 경로를 찾아서 자체적으로 작동하는지 확인하십시오 (예 : D:\Python\bin\Python.exePython 인터프리터를 입력 하고 확인하십시오). 변수를 설정하고 사용하십시오.


그래서:

set PYTHON=D:\Python\bin\Python.exe

또는 영구적으로 만들려면 제어판에서 동등한 작업을 수행하십시오.


1
좋아, 그래서 나는 얻는다 : Microsoft Windows [버전 6.1.7601] Copyright (c) 2009 Microsoft Corporation. 판권 소유. C : \ Users \ Matt Cashatt> set PYTHON = % PYTHON %; D : \ Python C : \ Users \ Matt Cashatt> % PYTHON % '% PYTHON %'은 (는) 내부 또는 외부 명령, 실행 가능한 프로그램 또는 배치 파일로 인식되지 않습니다 . C : \ Users \ Matt Cashatt>
Matt Cashatt

1
또한 D드라이브는 궁금한 경우를 대비하여 파이썬이있는 곳입니다. 도와 주셔서 감사합니다.
Matt Cashatt

고마워요, 고마워요! 다른 사람들을 위해 : set어떤 이유로 NPM 명령 창에서 mpm install jquery명령 을 실행 한 다음 그 직후 명령 을 실행해야 했습니다. 내가 별도로했다면 어떤 이유로 작동하지 않았습니다.
Matt Cashatt

@ MatthewPatrickCashatt : 내가 설명한 것처럼 set명령은 현재 cmd창 에만 영향을 미치므로 npm동일한 창에서 실행하기 전에 수행해야합니다 . 환경 변수를보다 영구적으로 설정하려면 시스템 제어판에 있거나 Windows 버전과 동일합니다.
abarnert

3
당신이 올바른 방법을 준 경우에 도움이 될뿐만 아니라 잘못된 방법을 설명 - \ 파이썬 \ 빈 \ python.exe를 : @abarnert은 실제 다음 PYTHON = D로 설정이 질문에 대한 답변입니다
reach4thelasers

449

모든 node-gyp 종속성과 함께 Python을 설치하지 않은 경우 관리자 권한으로 Powershell 또는 Git Bash를 열고 다음을 실행하십시오.

npm install --global --production windows-build-tools

그런 다음 패키지를 설치하십시오.

npm install --global node-gyp

설치가 완료되면 모든 node-gyp 종속성이 다운로드되지만 여전히 환경 변수가 필요합니다. 올바른 폴더에 Python이 있는지 확인하십시오.

C:\Users\ben\.windows-build-tools\python27\python.exe 

참고-지원되지 않으므로 3.x가 아닌 python 2.7을 사용합니다.

신음하지 않으면 계속해서 (사용자) 환경 변수를 만듭니다.

setx PYTHON "%USERPROFILE%\.windows-build-tools\python27\python.exe"

cmd를 다시 시작하고 변수를 set PYTHON반환 해야하는 변수가 있는지 확인하십시오.

마지막으로 다시 적용 npm install <module>


1
일부 권한 오류가 있었지만 C : \ Users [me] \. windows-build-tools \ python.msi에서 수동으로 파이썬을 설치했습니다. 설치시 경로에 추가하는 옵션이 있습니다. (cmd / PS 다시 시작) 작동
했고

오류 dh 키가 너무 작습니다. openssk \ ssl \ s3_clnt, c : 3641
user1428716

14
windows-build-tools 설치 필수 PowerShell은 Windows 10에서 관리자로 실행됩니다. 이는 setx 명령이setx PYTHON $env:USERPROFILE\.windows-build-tools\python27\python.exe
Bae

이 명령을 관리자 권한 명령 프롬프트에서 실행해야했지만 제대로 작동하는 것 같습니다. Python 3.x를 수동으로 설치하고 PYTHON 환경 변수를 설정하여 작동하지 않습니다. 파이썬 버전 관리의 차이점과 관련된 오류가 있다고 가정합니까? 상관없이 감사합니다!
JeffryHouser 2016

16

아래 주석으로 windows-build-tools를 설치 한 후 나를 위해

npm --add-python-to-path='true' --debug install --global windows-build-tools

아래 코드를 실행

npm config set python "%USERPROFILE%\.windows-build-tools\python27\python.exe"

일했다.


또한 위의 두 단계가 모두 필요했습니다. 또한 첫 번째 단계 인 'npm install windows-build-tools'단계를 실행했을 때 나에게 (Windows 10 Pro 1803, 노드 v10.15.3, npm v6.9.0) 추가 할 것입니다. 완료되면 끝없이 반복되는 것처럼 보였습니다 (같은 출력 라인을 콘솔에 피드백). 몇 분 동안이 무한 루프를보고 난 후에 Ctrl + C를 사용하여 "일괄 처리 작업을 종료"하기로 결정했습니다. 루프를 방해하는 것은 문제가되지 않은 것으로 보입니다.
StackOverflowUser


10

그 중 하나 및 / 또는 여러 개가 도움이 될 것입니다.

  1. 변수에 추가 C:\Python27\하십시오 PATH(Python이이 디렉토리에 설치되었다는 것을 고려하십시오) env 변수
    설정 방법 PATH: http://www.computerhope.com/issues/ch000549.htm 변수 를 설정
    한 후 콘솔 및 / 또는 Windows를 다시 시작하십시오.

  2. 위와 같은 섹션 ( "환경 변수")에서 이름 PYTHON과 값으로 새 변수 추가 변수를 C:\Python27\python.exe
    설정 한 후 콘솔 및 / 또는 Windows를 다시 시작하십시오.

  3. 관리자 모드에서 Windows 명령 줄 ( cmd) 엽니 다 .
    Python 설치 경로로 디렉토리를 변경하십시오. cd C:\Python27
    일부 설치에 필요한 symlink 를 작성하십시오 .mklink python2.7.exe python.exe

것을주세요 참고 하면, NOT 3.X를 파이썬 2.X가 있어야 실행,node-gyp 기반 설치를!

아래 텍스트는 Unix에 관한 것이지만 Windows 버전에는 Python 2.x가 필요합니다.

You can install with npm:

$ npm install -g node-gyp
You will also need to install:

On Unix:
python (v2.7 recommended, v3.x.x is not supported)
make
A proper C/C++ compiler toolchain, like GCC

이 기사는 또한 도움이 될 수 있습니다 : https://github.com/nodejs/node-gyp#installation


8

나는 같은 문제가 있었고이 답변들 중 아무것도 도움이되지 못했습니다. 필자의 경우 PYTHON 변수가 올바르게 설정되었습니다. 그러나 파이썬이 너무 깊게 설치되었습니다. 즉 경로가 너무 깁니다. 그래서 다음을 수행했습니다.

  1. 파이썬을 c : \ python에 다시 설치했습니다.
  2. 환경 변수 PYTHON을 C : \ python \ python.exe로 설정하십시오.

그리고 그게 다야!



6

이 문제를 해결하기위한 몇 가지 해결책이 있습니다. 1) "administrator"로 명령 프롬프트를 실행하십시오.

첫 번째 해결책으로 문제가 해결되지 않으면 다음 중 하나를 시도하십시오.

2) 관리자가 다음 코드 줄을 붙여 넣을 때 명령 프롬프트를 열고 Enter 키를 누릅니다.

npm install --global --production windows-build-tools

5

TL; DR 이름이 python2.7.exe 인 python.exe의 사본 또는 별명을 작성하십시오.

내 파이썬 2.7은 다음과 같이 설치되었습니다.

D : \ app \ Python27 \ python.exe

PYTHON env 변수를 설정하고 확인한 방법에 관계없이 항상이 오류가 발생했습니다.

아저씨! 스택 오류 : Python 실행 파일 "python2.7"을 찾을 수 없습니다. PYTHON env 변수를 설정할 수 있습니다.
아저씨! failNoPython에서의 스택 (C : \ Program Files \ nodejs \ node_modules \ npm \ node_modules \ node-gyp \ lib \ configure.js : 103 : 14)

그 이유는 node-gyp의 configure.js에서 파이썬 실행 파일이 다음과 같이 해결 되었기 때문입니다.

var python = gyp.opts.python || process.env.PYTHON || 'python'

그리고 gyp.opts.python의 값은 'python2.7'이므로 process.env.PYTHON보다 우선합니다.

node-gyp라는 이름으로 python.exe 실행 파일의 별칭을 만들어서이 문제를 해결했습니다.

D:\app\Python27>mklink python2.7.exe python.exe

이 작업에 대한 관리자 권한이 필요합니다.


5

다음은 명령 줄에서 admin으로 작동했습니다.

windows-build-tools 설치 (15-20 분 소요) :

 npm --add-python-to-path='true' --debug install --global windows-build-tools

환경 변수 추가 / 업데이트 :

setx PYTHON "%USERPROFILE%\.windows-build-tools\python27\python.exe"

node-gyp 설치 :

npm install --global node-gyp

exe 파일 이름을 Python에서 Python2.7로 변경

C:\Users\username\.windows-build-tools\python27\Python2.7

npm install module_name --save



5

이것은 NPM이 당신을 위해 모든 것을 할 수 있도록하는 가장 쉬운 방법입니다

npm --add-python-to-path='true' --debug install --global windows-build-tools

4

올바른 방법은 1) 여기 에서 python 2.7.14를 다운로드하고 설치 하십시오 . 2) 파이썬 환경 변수를 여기 에서 설정 하십시오 .

끝난!

참고 : 환경 변수를 적절히 설정하십시오. 나는 창문에 대해 여기에 대답했다.


4

node-sass@4.9.4설치 하는 동안 같은 도전을 받았습니다 .

그리고 현재 공식 문서를보고 위의 답변을 읽은 후에는 node-gyp 또는 windows-build 도구를 설치하지 않아도 될 수 있음을 알았습니다. 이것이 windows에 node-gyp 설치에 관한 내용 입니다. node-gyp은 node-sass 설치 프로세스와 관련이 있습니다. 그리고 다른 파이썬 버전을 다시 설치할 필요는 없습니다.

이것은 구세주입니다. 빌드 도구가 필요한 패키지를 설치하는 동안 "npm"이 찾아야 할 python 경로를 구성하십시오.

C:\> npm config set python /Python36/python

python3.6.3을 Windows-7에 설치했습니다.


설치하는 동안 같은 솔루션은 나를 위해 일한 node-sass@4.9.4난에 전환 할 때, windows-10사용 node@10.6.3yarn@1.19.1
MwamiTovi

참고 Python36/python파이썬 실행 파일의 경로 여야합니다.exe
MwamiTovi

새로운 경우, 파이썬 실행 파일이 설치된 곳으로 이동하십시오. windows 을 누르고 다음 hold Shift, and Right-Click을 입력하십시오.npm config set python
MwamiTovi

2

왜 파이썬 설치 프로그램을 다운로드하지 여기 ? 경로 설치를 확인할 때 도움이됩니다.


2

나를 위해이 단계는 문제를 해결했습니다.

1-이 cmd를 관리자 권한으로 실행 :

npm install --global --production windows-build-tools

2- 그런 다음 npm rebuild첫 번째 단계가 완료된 후 실행 (특히 문제의 주요 원인 인 python 2.7 설치 완료)


1

올바른 명령은 다음과 같습니다. set path = % path %; C : \ Python34 [파이썬 설치의 올바른 경로로 교체]

나는 같은 문제가 있었고 나는 이것을 이렇게 해결했다.

다른 사람들이 지적했듯이 이것은 일시적인 구성이며 현재 cmd 세션에서만 작동하며 npm install을 실행하기 전에 경로를 설정해야합니다.

이게 도움이 되길 바란다.


1

아저씨! 오류 gyp ERR을 구성하십시오! 스택 오류 : Python 실행 파일 "python"을 찾을 수 없습니다. PYT HON ​​env 변수를 설정할 수 있습니다.

재설치 할 필요가 없습니다.이 예외는 node-gyp 스크립트에 의해 throw 된 다음 다시 작성해보십시오. 필자의 경우처럼 설정 환경 변수가 충분합니다.

SET PYTHON=C:\work\_env\Python27\python.exe

1

Cygwin에서 이것을 사용하려면 답변 의 지침을 따라야합니다 . (Cygwin이 Windows 심볼릭 링크를 처리하는 방식에 문제가 있습니다.)


1

예 : pg_config를 실행할 수 없음 / 오류 node-gyp

해결책 : Windows에서는 PATH Env-> C : \ Program Files \ PostgreSQL \ 12 \ bin을 추가하십시오.

나를 위해 일하십시오. 이제 npm i pg-promise를 예를 들어 또는 다른 종속성으로 사용할 수 있습니다.


들어 pg-promise이 필요하지 않습니다. 당신은 아마 최대 붙 잡혔다 이가 . 최신 버전 만 사용하면 추가 기능이 필요하지 않습니다.)
vitaly-t

0

나를 위해, 문제는 LTS안정 버전이며 대부분의 사용자에게 권장되는 버전이 아닌 노드의 최신 버전을 사용하고 있다는 것입니다. 버전을
사용하면 LTS문제가 해결되었습니다.
여기에서 다운로드 할 수 있습니다.

LTS 버전

현재 최신 버전

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.