Comment utiliser le sous-processus.Ouvrir correctement sur Windows XP? - Affiche l'erreur 2 de Windows lors de l'accès à npm
-
28-10-2019 - |
Question
J'essaie d'exécuter un code Python existant et j'ai des problèmes avec celui-ci.
Ce programme nécessite le programme npm installé et qui est installé dans C: \ Program Files \ nodejs \ npm sur mon ordinateur.Lorsque j'exécute le code suivant, dans le cadre de l'ensemble du programme, cela génère des erreurs.
def popen_results(args):
proc = subprocess.Popen(args, stdout=subprocess.PIPE)
return proc.communicate()[0]
def installed():
"""docstring for npm_installed"""
return popen_results(["which", "npm"]).strip()
Voici la pile complète de l'erreur lancée -
Checking for node and dependencies
Traceback (most recent call last):
File "deploy\deploy.py", line 344, in <module>
main()
File "deploy\deploy.py", line 287, in main
if not check_deps():
File "deploy\deploy.py", line 201, in check_deps
return npm.check_dependencies()
File "C:\Documents and Settings\Sunil\workspace\khan\src\deploy\npm.py", line
38, in check_dependencies
if not installed():
File "C:\Documents and Settings\Sunil\workspace\khan\src\deploy\npm.py", line
13, in installed
return popen_results(["which", "npm"]).strip()
File "C:\Documents and Settings\Sunil\workspace\khan\src\deploy\npm.py", line
8, in popen_results
proc = subprocess.Popen(args, stdout=subprocess.PIPE)
File "C:\python25\lib\subprocess.py", line 594, in __init__
errread, errwrite)
File "C:\python25\lib\subprocess.py", line 822, in _execute_child
startupinfo)
WindowsError: [Error 2] The system cannot find the file specified
La solution
Je suis d'accord avec martineau, il est incapable de trouver lequel.Le script a peut-être été écrit en supposant qu'il allait être exécuté dans un environnement unix qui aurait très probablement la commande «which» disponible et dans le PATH par défaut.Comme il semble que vous l'exécutiez sous Windows, je ne pense pas que cela fonctionnera.
Il semble cependant qu'il existe des alternatives sous Windows, décrites ici: Existe-t-il un équivalent à lequel sous Windows?