web-dev-qa-db-ja.com

Node.js依存関係のためのWindows上でのPythonの実行

私はNPM経由でいくつかの依存関係、すなわちjQueryをダウンロードすることを要求するNode.jsコードベースに入っています。

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

> [email protected] 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  [email protected] { [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! [email protected] install: `node-gyp rebuild`
npm ERR! `cmd "/c" "node-gyp rebuild"` failed with 1
npm ERR!
npm ERR! Failed at the [email protected] 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!     <[email protected]>

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のインストールが欠けていることです。さて、私はPythonをインストールし、変数を設定し、そして再起動してもエラーが発生しました。

私が行方不明になっているものに関して何か手がかりはありますか?

202
Matt Cashatt

問題は、環境変数を設定するdid n'tであるということです。

エラーには次のように明記されています。

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でも異なりますが、グーグルで検索できます。

または、setコマンドの直前にnpmを実行し、その間に再起動することはありません。


設定スクリプトがやろうとしていることとまったく同じことを行うことで、正しいことを行ったかどうかをテストできます。npmを実行する前に、%PYTHON%を実行してください。正しく完了していれば、Pythonインタープリターが得られます(すぐに終了できます)。エラーが発生した場合は、正しく実行していません。


これには2つの問題があります。

set PYTHON=%PYTHON%;D:\Python

まず、PYTHON;D:\Pythonに設定しています。余分なセミコロンは、PATHPYTHONPATHのようなパスをセミコロンで区切ったリストには適していますが、PYTHONのような単一の値には適していません。同様に、既存の値に新しい値を追加することは、パスのリストに別のパスを追加する場合に必要なものですが、単一の値用ではありません。したがって、必要なのはset PYTHON=D:\Pythonだけです。

第二に、D:\PythonはPythonインタープリターへのパスではありません。 D:\Python\Python.exe、またはD:\Python\bin\Python.exeのようなものです。正しいパスを見つけて、それが単独で機能することを確認し(たとえば、D:\Python\bin\Python.exeと入力し、Pythonインタープリターを取得するようにしてください)、変数を設定して使用します。


そう:

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

または、永続化する場合は、コントロールパネルで同等の操作を行います。

126
abarnert

すべての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>を再適用してください

408
benscabbia

これは私にとってこれらの問題の多くを解決したガイドです。

http://www.steveworkman.com/node-js/2012/installing-jsdom-on-windows/ /

私は特にPythonのバージョンを重要だと思います。必ず3の代わりに2.7.3をインストールしてください。

13
Jon Leavitt

以下のコメントで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"

うまくいった。

8
Serhat Oz

私は同じ問題を抱えていたし、これらの答えのどれも助けにはならなかった。私の場合、PYTHON変数は正しく設定されています。しかし、pythonのインストールが深すぎる、つまりパスが長すぎます。それで、私は以下をしました:

  1. c:\ pythonにpythonを再インストールしました
  2. 環境変数PYTHONをC:\ python\python.exeに設定します。

以上です!

7
zhekaus

これらのうちの1つまたは複数、あるいはその両方が役立ちます。

  1. PATH変数にC:\Python27\を追加します(このディレクトリにPythonがインストールされていると仮定します)。
    PATH env変数の設定方法: http://www.computerhope.com/issues/ch000549.htm
    変数を設定した後、コンソールまたはWindowsを再起動してください。

  2. 上記と同じセクション(「環境変数」)に、名前がPYTHON、値がC:\Python27\python.exeの新しい変数を追加します。
    変数を設定した後、コンソールまたはWindowsを再起動してください。

  3. Windowsのコマンドラインを開きます(cmd管理者モード
    ディレクトリをあなたのPythonインストールパスに変更してください:cd C:\Python27
    いくつかのインストールではシンボリックリンクを必要とします:mklink python2.7.exe python.exe

node-gypベースのインストールを実行するには、3.x ではなく、Python 2.xが必要です。

以下のテキストは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

7
thybzi

この問題を解決するためのいくつかの解決策があります:1) "administrator"としてあなたのコマンドプロンプトを実行します。

最初の解決法でも問題が解決しない場合は、次の方法を試してください。

2)次のコード行を貼り付けてEnterキーを押します。

npm install --global --production windows-build-tools
4
Pedram Rastegar

TL; DR python2.7.exeという名前のpython.exeのコピーまたはエイリアスを作成します

私のpython 2.7は以下のようにインストールされました。

D:\ app\Python27\python.exe

PYTHON環境変数をどのように設定(および検証)しても、常にこのエラーが発生します。

 gyp ERR! stack Error:Pythonの実行ファイル "python2.7"が見つかりません。PYTHON環境変数を設定できます。
 gyp ERR! failNoPythonのスタック(C:¥Program Files¥nodejs¥node_modules¥npm¥node_modules¥node-gyp¥lib¥configure.js:103:14)

その理由は、node-gypのconfigure.jsでは、python実行可能ファイルが次のように解決されたためです。

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

この操作には管理者権限が必要です。

4
iaarnio

私はこれを言及する以外に仕方がない。もしあなたがPython 3を使っていてnode-gypがうまくいかないのなら、node-gypは現在python3をサポートしていないと言うのは悲しいことです。

これがあなたへのリンクです: https://github.com/nodejs/node-gyp/issues/1268https://github.com/nodejs/node-gyp/issues/193

4
Gabriel Wu

以下は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

4
Sikander

これは助けました: https://www.npmjs.com/package/node-gyp

私はこれらのステップに従った:

npm install -g node-gyp

その後:

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

正しい方法は1) here からpython 2.7.14をダウンロードしてインストールすることです。 2) here からpythonの環境変数を設定します。

やった!

注意:それに応じて環境変数を設定してください。私は窓のためにここに答えた。

3
Herat Patel

なぜpythonインストーラをダウンロードしないのですか ここ ?あなたがパスインストールをチェックするとき、それはあなたのために仕事をします

1
T-prod

gyp ERR!エラーを設定するgyp ERR! stackエラー:Pythonの実行可能ファイル "python"が見つかりません。PYTHON環境変数を設定できます。

再インストールする必要はありません。この例外はnode-gypスクリプトによってスローされます。その後、再構築を試みます。私の場合のように、設定環境変数は十分です。

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

私にとっては、次の手順で問題が解決しました。

1 - このcmdをadminとして実行します。

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

2-その後、最初のステップが完了した後にnpm rebuildを実行する(特に問題の主な原因であったpython 2.7のインストールを完了する)

0
Ahmed Elkoussy

私にとっては、問題は私がノードの最新バージョンを使用していて、安定版でほとんどのユーザーに推奨されているLTSバージョンを使用していなかったことです。
LTSバージョンを使用することで問題は解決しました。
ここからダウンロードできます。

LTSバージョン

現在の最新バージョン

0
Nurul Sundarani

正しいコマンドは次のとおりです。set path =%path%; C:\ Python34 [Pythonインストールの正しいパスに置き換えてください]

私は同じ問題を抱えていました、そして私はちょうどそのようにこれを解決しました。

他の人々が指摘したように、これは不安定な設定であり、現在のcmdセッションでのみ機能します。(明らかに)npm installを実行する前にパスを設定する必要があります。

これが役に立つことを願っています。

0
Projenix

install [email protected] を試しているときに、同じ課題に遭遇しました。

そして、現在の公式ドキュメントを見て、上記の回答を読んだ後、node-gypをインストールする必要も、windows-buildツールをインストールする必要もないかもしれないことに気付きました。これは、ここで言うことです Windowsでのnode-gypのインストールについて 。 node-gypは、node-sassのインストールプロセスに関与していることに注意してください。また、別のpythonバージョンを再インストールする必要はありません。

これは救世主です。ビルドツールを必要とするパッケージをインストールするときに「npm」が検索するpythonパスを設定します。

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

私はpython3.6.3をwindows-7にインストールしていました。

0
Mwami.Tovi

Cygwinでこれを使用しようとしているなら、 this answerの指示に従う必要があります。 (CygwinがWindowsのシンボリックリンクを処理する方法は問題です。)

0
emigenix