web-dev-qa-db-ja.com

Node.js(npm)は、%PYTHON%が設定された後でもpythonの検索を拒否します

そのため、Node.jsを機能させようとしています。もちろん、宣伝されているほど簡単ではありません:)

私のコンピューターには2つのpythonバージョンがありますが、Node.jsは古いバージョン2.7でしか動作しないようです。エラーが発生した場合、PYTHONこのエラーのある環境変数:

Error: Can't find Python executable "python2.7", you can set the PYTHON env variable.

それでは、必要に応じて変数を構成しました。

C:\Users\Jakub>set PYTHON=C:\MYSELF\Programs\Python2.7\python.exe

C:\Users\Jakub>echo %PYTHON%
C:\MYSELF\Programs\Python2.7\python.exe

変数が実際に設定されているかどうかを確認するためにechoを使用したことがわかります。残念ながら、そのnpmがそれを読み取ることができず、エラーが再び表示されます。 %PYTHON%変数を設定した直後の完全なログは次のとおりです。

C:\Users\Jakub>npm install minecraft-protocol
\


> [email protected] install C:\Users\Jakub\node_modules\minecraft-protocol\node_modules\ursa
> node-gyp rebuild

|
C:\Users\Jakub\node_modules\minecraft-protocol\node_modules\ursa>if not defined npm_config_node_gyp (node "C:\Program Files (x86)\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\no
de_modules\node-gyp\bin\node-gyp.js" rebuild )  else (rebuild)
gyp ERR! configure error
gyp ERR! stack Error: Can't find Python executable "python2.7", you can set the PYTHON env variable.
gyp ERR! stack     at failNoPython (C:\Program Files (x86)\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:103:14)
gyp ERR! stack     at C:\Program Files (x86)\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:64:11
gyp ERR! stack     at FSReqWrap.oncomplete (evalmachine.<anonymous>:95:15)
16
Tomáš Zato

最も安定した解決策は、python npm内部値を実際のパスに設定することです。

npm config set python C:\Programs\Python2.7\python2.7.exe

これにより、すべての環境変数と%PATH%がらくたをして、pythonがインストールされていればどこでも開始します。

44
Tomáš Zato

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

My python 2.7は次のようにインストールされました

D:\ app\Python27\python.exe

どのように設定(および検証)しても、常にこのエラーが発生しましたPYTHON= env変数:

 gyp ERR!スタックエラー:Python実行可能ファイル「python2.7」が見つかりません。PYTHON= env変数を設定できます。
 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

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

5
iaarnio

Windowsの場合は環境変数を設定した後にターミナルを再度開きますが、Linuxの場合はターミナルを再起動する必要はありません。

2
KlwntSingh

これは私のために働いた:

npm config set python C:\Users\<username>\.windows-build-tools\python27\python.exe

パスをpython実行可能ファイルに設定します。このヘルプを期待してください:-)

0
LAXIT KUMAR