Python'u Windows'ta Node.js bağımlılıkları için çalıştırma


226

Ben NPM, yani jQuery ile birkaç bağımlılık indirmek gerektiren bir Node.js kod temeli alıyorum.

Çalıştırmaya çalışırken npm install jquery, bu hatayı almaya devam ediyorum:

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>

Hata, eksik bir Python kurulumundan kaynaklanıyor gibi görünüyor. Python'u yükledim, değişkeni ayarladım ve yeniden başlattım ve hala hatayı.

Kaçırdığım şey hakkında bir ipucu var mı?


1
Metni görüntü yerine metin olarak yapıştırabilir misiniz? Okunması zor olmasının yanı sıra (özellikle zaten düşük çözünürlüklü bitmap yazı tiplerini küçülttüğü için) kopyalanamaz.
abarnert

1
Daha da önemlisi: Yeniden başlatmadan önce ortam değişkenini nasıl ayarladınız? PYTHON=C:\Python27\Python.exeCmd pencerenizde yeni yaptıysanız ve yeniden başlattıysanız, ayar kaybedildi.
abarnert

7
Ayrıca, hangi Python sürümünü yüklediniz? En az eski waf ve gyp sürümleri 2.x gerektiriyordu, ancak bu konuda hiçbir şey söylemedi ve bunun yerine 3.x'i yüklediyseniz her türlü gizemli hatayı verirdi.
abarnert

Yorumlarınız için teşekkürler. Hatayı metin biçiminde gönderdim. Ben v2.7 kullanıyorum
Matt Cashatt

Tamam, ama lütfen "daha önemlisi" sorusunu cevaplayın, çünkü metnin de ifade ettiği gibi, bu önemlidir. Bunu kendiniz de test etmek isteyebilirsiniz: cmd.exePencerede, npmkomutu denemeden önce , bir Python yorumlayıcısı ya pythonda %PYTHON%başlatır mı? Değilse, doğru şekilde ayarlamadınız.
abarnert

Yanıtlar:


132

Senin sorunun olduğunu vermedi ortam değişkeni ayarlamak.

Hata açıkça şunu söylüyor:

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

Ve yorumunuzda, bunu yaptığınızı söylüyorsunuz:

set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib

Bu güzel, ama PYTHONdeğişkeni ayarlamaz, değişkeni ayarlar PYTHONPATH.


Bu arada, sadece setkomutu kullanmak sadece geçerli cmdoturumu etkiler . Bundan sonra yeniden başlatırsanız, söylediğiniz gibi, cmdiçinde bu değişken ayarlanmamış tamamen yeni bir oturumla sonuçlanırsınız .

Ortam değişkenlerini kalıcı olarak ayarlamanın birkaç yolu vardır - en kolayı XP'de Sistem Kontrol Panelinde olup, elbette Vista'da farklı, 7'de tekrar farklı ve 8'de tekrar farklıdır, ancak bunu Google'da yapabilirsiniz.

Alternatif olarak, aradan yeniden başlatmadan komutun sethemen npmönünü yapın.


Yapılandırma komut dosyasının yapmaya çalıştığı şeyle aynı şeyi yapıp yapmadığınızı test edebilirsiniz: Çalıştırmadan önce çalıştırmayı npmdeneyin %PYTHON%. Doğru yaptıysanız, bir Python tercümanı alırsınız (hemen bırakabilirsiniz). Bir hata alırsanız, doğru yapmadınız.


Bununla birlikte iki tane sorun var:

set PYTHON=%PYTHON%;D:\Python

İlk, sen ayar PYTHONiçin ;D:\Python. Bu ekstra noktalı virgül, noktalı virgülle ayrılmış yolların listesi için uygundur, PATHveya gibi PYTHONPATH, ancak tek bir değer için uygun değildir PYTHON. Aynı şekilde, mevcut değere yeni bir değer eklemek, bir yol listesine başka bir yol eklemek istediğinizde, ancak tek bir değer için değil, istediğiniz değerdir. Yani, sadece istiyorsun set PYTHON=D:\Python.

İkincisi, D:\PythonPython yorumlayıcısının yolu değil. Gibi bir şey D:\Python\Python.exe, ya da D:\Python\bin\Python.exe. Doğru yolu bulun, kendi başına çalıştığından emin olun (örn. D:\Python\bin\Python.exeBir Python yorumlayıcısı aldığınızdan emin olun), sonra değişkeni ayarlayın ve kullanın.


Yani:

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

Veya, kalıcı hale getirmek istiyorsanız, Kontrol Panelinde eşdeğerini yapın.


1
Tamam, bu yüzden şunu alıyorum: Microsoft Windows [Sürüm 6.1.7601] Telif Hakkı (c) 2009 Microsoft Corporation. Tüm hakları Saklıdır. C: \ Kullanıcılar \ Matt Cashatt> set PYTHON =% PYTHON%; D: \ Python C: \ Kullanıcılar \ Matt Cashatt>% PYTHON% '% PYTHON%' dahili veya harici bir komut, çalıştırılabilir program veya toplu iş dosyası olarak tanınmıyor . C: \ Users \ Matt Cashatt>
Matt Cashatt

1
Ayrıca, Dmerak ediyorsanız sürücü Python nerede olduğunu. Yardımın için tekrar teşekkürler.
Matt Cashatt

Bir cazibe gibi çalıştı, teşekkürler! Diğerleri için: setKomutu NPM komut penceresinde bir nedenden dolayı çalıştırmam ve mpm install jqueryhemen ardından komutu çalıştırmam gerekiyordu . Onları ayrı ayrı yapsaydım nedense işe yaramadı.
Matt Cashatt

@MatthewPatrickCashatt: Açıkladığım gibi, setkomut yalnızca geçerli cmdpencereyi etkiler , bu yüzden npmaynı pencerede çalıştırmadan önce bunu yapmanız gerekir . Ortam değişkenlerini daha kalıcı olarak ayarlamak istiyorsanız, bu Sistem Denetim Masası'nda veya Windows sürümünüz için eşdeğerdir.
abarnert

3
@abarnert bu sorunun asıl cevabıdır ve daha sonra PYTHON = D: \ Python \ bin \ Python.exe'yi ayarlayın - doğru yolu verdiğinizde ve yanlış yolu
açıklarsanız yardımcı olur

449

Tüm düğüm-gyp bağımlılıklarıyla birlikte yüklü python'unuz yoksa, yönetici ayrıcalıklarıyla Powershell veya Git Bash'i açın ve çalıştırın:

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

ve ardından paketi yüklemek için:

npm install --global node-gyp

yüklendikten sonra, tüm düğüm-gyp bağımlılıklarını indirmiş olacaksınız, ancak yine de ortam değişkenine ihtiyacınız var. Doğrulama Python gerçekten doğru klasörde bulunur:

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

Not - desteklenmediği için 3.x değil python 2.7 kullanır

İnleme yapmazsa, devam edin ve (kullanıcı) ortam değişkeninizi oluşturun:

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

cmd'yi yeniden başlatın ve değişkeni set PYTHONdöndüren değişkenin var olduğunu doğrulayın

Son olarak yeniden başvur npm install <module>


1
Bazı izinler hatası vardı, ancak python el ile yüklemeyi başardı: C: ​​\ Kullanıcılar [me] \. Windows-build-tools \ python.msi. Kurulumda, yola ekleme seçeneği vardır. (Cmd / PS yeniden başlatılır) ve işe yaradı
d.raev

Hata dh anahtarını çok küçük alıyorum: openssk \ ssl \ s3_clnt, c: 3641
user1428716 13:17

14
Yükleme pencereleri-birikmesi araçlar, Windows 10 üzerinde Yöneticisi olarak setx komut olur Bu araçlar PowerShell çalıştırmak gereklisetx PYTHON $env:USERPROFILE\.windows-build-tools\python27\python.exe
Bae

Bu komutları yükseltilmiş bir komut isteminde çalıştırmak zorunda kaldım, ancak işe yaramış gibi görünüyor. Python 3.x'i el ile yükleme ve PYTHON ortam değişkenini işe yaramayacak şekilde ayarlama. Ben python sürüm oluşturma farkı ile ilgili benim hatam varsayalım? Ne olursa olsun teşekkürler!
JeffryHouser

16

Aşağıdaki yorum ile windows-build-tools yükledikten sonra benim için

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

aşağıdaki kodu çalıştırmak

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

çalıştı.


Yukarıdaki adımların her ikisine de ihtiyacım vardı. Ben de ekleyeceğim, benim için, (Windows 10 Pro 1803, düğüm v10.15.3, npm v6.9.0) ilk adımı çalıştırdığımda, 'npm install windows-build-tools' adımı, bu kurulum hiç görünmedi tamamlandığında, sonsuz döngü içinde görünüyordu (aynı çıkış hatlarını konsola geri besliyor). Bu sonsuz sonsuz döngüyü birkaç dakika izledikten sonra, "toplu işi sonlandırmak" için Ctrl + C kullanmayı seçtim. Her şey amaçlandığı gibi çalıştı, döngüyü kesmek bir sorun gibi görünmüyordu.
StackOverflowUser


10

Bunlardan biri ve / veya birden fazlası aşağıdakilere yardımcı olmalıdır:

  1. Ekle C:\Python27\sizin için PATHdeğişken (Python bu dizinde yüklü göz önünde bulundurarak)
    nasıl ayarlanır PATH: env değişkeni http://www.computerhope.com/issues/ch000549.htm
    Yeniden değişkeni ayarladıktan sonra konsol ve / veya Windows.

  2. Yukarıdakiyle aynı bölümde ("Ortam Değişkenleri"), ad PYTHONve değer içeren yeni bir değişken ekleyin Değişken C:\Python27\python.exe
    ayarlandıktan sonra konsolunuzu ve / veya Windows'u yeniden başlatın.

  3. Yönetici modunda Windows komut satırını ( cmd) açın . Dizini Python kurulum yolunuzla değiştirin: Bazı kurulumlar için symlink'i gerekli kılın:
    cd C:\Python27
    mklink python2.7.exe python.exe

Tabanlı kurulumları çalıştırmak için Python 2.x, 3.x değil, lütfen unutmayın node-gyp!

Aşağıdaki metin Unix hakkında yazıyor, ancak Windows sürümü de Python 2.x gerektirir:

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

Bu makale ayrıca yardımcı olabilir: https://github.com/nodejs/node-gyp#installation


8

Aynı sorunu yaşadım ve bu cevapların hiçbiri yardımcı olmadı. Benim durumumda PYTHON değişkeni doğru ayarlanmış. Ancak python çok derin kuruldu, yani çok uzun bir yolu var. Bu yüzden aşağıdakileri yaptım:

  1. python'u c: \ python'a yeniden yükledi
  2. PYTHON ortam değişkenini C: \ python \ python.exe olarak ayarlayın

Ve bu kadar!



6

Bu sorunu çözmek için bazı çözümler vardır: 1) komut isteminizi "yönetici" olarak çalıştırın.

İlk çözüm sorununuzu çözmezse şunu deneyin:

2) aşağıdaki kod satırını yapıştırmak için enter komutunu açın ve enter tuşuna basın:

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

5

TL; DR python2.7.exe adıyla python.exe dosyasının bir kopyasını veya diğer adını yapın

Python 2.7'm şu şekilde kuruldu:

D: \ uygulama \ Python27 \ python.exe

PYTHON env değişkeni nasıl ayarlanır (ve doğrulanır) olursa olsun her zaman bu hatayı aldım:

gyp ERR! yığın Hatası: Python yürütülebilir "python2.7" bulunamıyor, PYTHON env değişkenini ayarlayabilirsiniz.
gyp ERR! failNoPython (C: \ Program Files \ nodejs \ node_modules \ npm \ node_modules \ node-gyp \ lib \ configure.js: 103: 14)

Bunun nedeni node-gyp's configure.js dosyasında python çalıştırılabilir dosyasının şöyle çözülmüş olmasıydı:

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

Ve gyp.opts.python'un 'python2.7' değerine sahip olduğu ve bu nedenle geçersiz kılınan process.env.PYTHON olduğu ortaya çıktı.

Bu düğüm-gyp aradı adıyla python.exe yürütülebilir için bir diğer ad oluşturarak çözüldü:

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

Bu işlem için yönetici haklarına ihtiyacınız var.


5

Aşağıdaki komut satırından yönetici olarak benim için çalıştı:

Windows derleme araçlarını yükleme (bu işlem 15-20 dakika sürebilir):

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

Ortam değişkenini ekleme / güncelleme:

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

Node-gyp kurulumu:

npm install --global node-gyp

Exe dosyasının adını Python'dan Python2.7 olarak değiştirmek.

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

npm install module_name --save



5

Bu, NPM'nin sizin için her şeyi yapmasına izin vermenin en kolay yoludur

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

4

Doğru yol 1) buradan python 2.7.14 indirin ve yükleyin . 2) Python için ortam değişkenini buradan ayarlayın .

bitmiş!

not: Lütfen ortam değişkenini buna göre ayarlayın. Burada pencereler için cevap verdim.


4

Node-sass@4.9.4'ü yüklemeye çalışırken aynı zorlukla karşılaştım .

Ve mevcut resmi belgelere baktıktan ve yukarıdaki cevapları okuduktan sonra, düğüm-gyp'yi veya windows-build araçlarını yüklemeniz gerekmeyebileceğini fark ettim. Bu, düğüm-gyp'yi pencerelere yüklemek hakkında söylediği şeydir . Düğüm-gyp'in düğüm-sass kurulum sürecinde yer aldığını unutmayın. Ve gerçekten başka bir python sürümünü yeniden yüklemenize gerek yok.

Bu kurtarıcı, yapı araçları gerektiren paketleri kurarken "npm" nin araması gereken python yolunu yapılandırın.

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

Windows-7'ye python3.6.3'ü yükledim.


Aynı çözüm, yükleme sırasında benim için çalıştı node-sass@4.9.4, ben geçti windows-10, kullanarak node@10.6.3veyarn@1.19.1
MwamiTovi

Bunun Python36/python, python yürütülebilir dosyanızın yolu olması gerektiğini unutmayın.exe
MwamiTovi

Yeni ise, python çalıştırılabilirinizin kurulu olduğu yere gidin. Pencerelerde , Basınhold Shift, and Right-Click ve şunu girin:npm config set python
MwamiTovi

2

Neden python yükleyiciyi burada indirmiyorsunuz ? Yol kurulumunu kontrol ettiğinizde işi sizin için yapar


2

Benim için bu adımlar sorunu çözdü:

1- Bu cmd'yi yönetici olarak çalıştırma:

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

2- Daha npm rebuildsonra 1. adım tamamlandıktan sonra çalışıyor (özellikle sorunun ana nedeni olan python 2.7 kurulumunu tamamlamak)


1

İşte doğru komut: set path =% path%; C: \ Python34 [Python kurulumunuzun doğru yoluyla değiştirin]

Aynı problemi yaşadım ve bunu böyle çözdüm.

Diğer bazı kişilerin işaret ettiği gibi, bu geçici bir yapılandırmadır, yalnızca geçerli cmd oturumu için çalışır ve (tabii ki) npm yüklemesini çalıştırmadan önce yolunuzu ayarlamanız gerekir.

Umarım bu yardımcı olur.


1

gyp ERR! hata gyp ERR yapılandırmak! yığın Hatası: Python yürütülebilir "python" bulunamıyor, PYT HON ​​env değişkenini ayarlayabilirsiniz.

Yeniden yüklemek gerekmez, bu istisna node-gyp betiği tarafından atılır, sonra yeniden oluşturmaya çalışılır. Benim durumumda olduğu gibi yeterli kurulum ortamı değişkeni:

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

1

Bunu Cygwin'de kullanmaya çalışıyorsanız, bu cevaptaki talimatları izlemeniz gerekir . (Cygwin'in Windows simgelerine nasıl davrandığı bir sorun.)


1

Örnek: pg_config yürütülebilir değil / hata düğümü-gyp

Çözüm: Pencerelerde PATH Env -> C: \ Program Files \ PostgreSQL \ 12 \ bin eklemeyi deneyin

Benim için çalış, Şimdi npm i pg-promise örneğin veya diğer bağımlılıklar kullanabilirsiniz.


Çünkü pg-promisebuna ihtiyacınız yok. Muhtemelen yakalandı bundan . Sadece en son sürümü kullanın ve iyi olacaksınız, bu ekstra şeylerden herhangi birine gerek yok;)
vitaly-t

0

Benim için sorun, LTSkararlı sürüm olan ve çoğu kullanıcı için önerilen sürümü değil, düğümün en son sürümünü kullanıyordum .
Kullanma LTSSürüm sorunu çözüldü.
Buradan indirebilirsiniz:

LTS Sürümü

Mevcut Son Sürüm

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.