61 votes

Après `npm install`, une erreur concernant une erreur de syntaxe en python apparaît ?

J'essaie d'installer les dépendances nécessaires pour Exokit, mais je reçois une erreur relative à une erreur de syntaxe Python.

Il s'agit d'un nouveau projet que j'ai voulu essayer, impliquant la RV dans le navigateur. J'ai reclassé le dépôt de leur github et téléchargé directement depuis leur site web. J'ai suivi les instructions données à la lettre (il n'y en avait que 4, lol).

I have not yet touched the code and this is the error that I am getting.

Austin@DESKTOP-UD2R1O4 MINGW64 ~/exokit (master)
$ npm install

> raw-buffer@0.0.19 install C:\Users\Austin\exokit\node_modules\raw-buffer
> node-gyp rebuild

C:\Users\Austin\exokit\node_modules\raw-buffer>if not defined 
npm_config_node_gyp (node "C:\Program 
Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\node-gyp- 
bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild )  else (node 
"C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" rebuild )
gyp ERR! configure error
gyp ERR! stack Error: Command failed: C:\Users\Austin\Anaconda3\python.EXE -c import sys; print "%s.%s.%s" % sys.version_info[:3];
gyp ERR! stack   File "<string>", line 1
gyp ERR! stack     import sys; print "%s.%s.%s" % sys.version_info[:3];
gyp ERR! stack                                ^
gyp ERR! stack SyntaxError: invalid syntax
gyp ERR! stack
gyp ERR! stack     at ChildProcess.exithandler (child_process.js:276:12)
gyp ERR! stack     at emitTwo (events.js:126:13)
gyp ERR! stack     at ChildProcess.emit (events.js:214:7)
gyp ERR! stack     at maybeClose (internal/child_process.js:915:16)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)
gyp ERR! System Windows_NT 10.0.17134
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd C:\Users\Austin\exokit\node_modules\raw-buffer
gyp ERR! node -v v8.12.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.4: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! raw-buffer@0.0.19 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the raw-buffer@0.0.19 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\Austin\AppData\Roaming\npm-cache\_logs\2019-01-06T06_55_37_752Z-debug.log

0 votes

Avez-vous installé python sur votre machine ?

50voto

Kalpesh Kashyap Points 269

Essayez ceci dans cmd administrateur (ou Windows Powershell Administrateur si cmd se fige)

npm install --global Windows-build-tools

1 votes

Cela semble avoir fonctionné ! Merci, je ne l'aurais jamais trouvé !

16 votes

On dirait qu'il voulait Python 2.7 et non 3.6.

7 votes

J'ai rencontré le même problème, mais mon système se bloque pendant l'installation des outils de construction de Visual Studio (gelé sur python 2.7 installé avec succès - va-t-il installer autre chose ? il ne me renvoie pas à l'invite de commande). J'ai tapé python à l'invite de commande et ça ne marche pas, où dois-je le chercher ?

21voto

Israel Obanijesu Points 478

Si la ou les réponses fournies ne vous conviennent pas, voici quelques conseils que vous pouvez suivre pour atténuer les problèmes liés au système d'exploitation Windows.

NOTE : Si vous avez déjà essayé d'installer les outils de construction via la commande npm sans succès, c'est probablement une bonne idée de tout supprimer avant d'appliquer les conseils ci-dessous.

Vous pouvez trouver les outils de construction ici et simplement supprimer les dossiers (mais je ne sais pas s'ils sont installés ailleurs) :

  • C:\Users\'yourUser'\.windows-build-tools\
  • C:\Users\'yourUser'\AppData\Roaming\npm\node_modules\windows-build-tools

Après vous être assuré que les dossiers spécifiés ci-dessus sont supprimés, vous pouvez essayer d'appliquer l'une des astuces suivantes.

Premier conseil :

  • Exécutez CMD ou PowerShell en tant qu'administrateur
  • Installez node-gyp en utilisant la commande suivante : npm install -g node-gyp
  • Téléchargez et installez manuellement les outils de construction Windows à partir de ce lien : Outils de construction Windows
  • Téléchargez et installez Python 2.7
  • Enregistrez la version de Microsoft Visual Studio auprès de npm en utilisant la commande suivante : npm config set msvs_version <your msvs_version e.g. 2017>
  • Enregistrez le chemin du fichier exécutable python auprès de npm en utilisant la commande suivante : npm config set python <the path to python executable file>

Deuxième conseil (RECOMMANDÉ)

  • Exécutez CMD ou PowerShell en tant qu'administrateur
  • Installez Windows-build-tools avec le chemin python directement en utilisant la commande suivante : npm --add-python-to-path='true' install --global --production windows-build-tools
  • Vous pouvez exécuter la commande suivante : npm config set python <the path to python executable file> afin d'être sûr que npm pointe vers le chemin correct du fichier exécutable de python.
    Afin d'utiliser cette commande, vous pouvez trouver le chemin de python ici (c'est-à-dire après avoir exécuté la commande dans l'étape précédente) : C:\Users\<your_user_name>\.windows-build-tools\python27

Plus d'informations ou de descriptions sur node-gyp peuvent être trouvées ici : nœud-gyp

Vous trouverez de plus amples informations sur les problèmes éventuels liés aux outils de construction Windows dans les liens suivants : https://github.com/felixrieseberg/Windows-build-tools/issues/47
https://github.com/felixrieseberg/Windows-build-tools/issues/56

Note supplémentaire : Certaines personnes ont tendance à avoir des espaces dans le nom des chemins d'accès de leurs projets, tandis que certains outils ne gèrent pas bien les espaces dans les noms de chemins d'accès. Vous pouvez obtenir plus d'informations ici : https://github.com/nodejs/node-gyp/issues/809

J'espère que cela résout votre problème.

3voto

mdowes Points 481

Toute erreur qui indique une erreur de syntaxe lors de l'exécution du code python est due à la version de python (python v3 ou v2) qui exécute le fichier python script. Dans ce cas précis, npm essaie de construire quelques modules node car les binaires de ces modules ne sont pas publiés sur internet. Par conséquent, lorsqu'une version incorrecte du compilateur python (ou de l'interpréteur comme certains le diraient) est chargée et utilisée pour construire le code python, vous verrez une erreur de syntaxe.

La solution à ce problème n'est pas de désinstaller python, car vous pouvez avoir besoin des deux versions de python à des fins différentes. Ajoutez simplement le chemin de python v2 avant celui de python v3 si vous avez les deux ou si vous n'avez pas python, installez python v2 et ajoutez l'emplacement à la variable d'environnement comme indiqué ci-dessous. J'espère que cela résoudra votre problème.

EnvVariables

3voto

Konstantin Lyakh Points 396

Au cas où vous auriez déjà une version plus récente de Python est installée il n'est pas nécessaire de le désinstaller. Vous pouvez installer une version plus ancienne de Python 2.7 et suivre les recommandations dans cette réponse .

2voto

Vinayk93 Points 181

Node.js est construit avec GYP - outil de construction multiplateforme écrit en Python. Certaines autres étapes de construction sont également implémentées en Python. Python est donc nécessaire pour construire Node à partir des sources.

Mais vous avez également besoin de Python pour créer des addons natifs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X