¿Cómo instalar el paquete npm desde el script de python?

¿Cómo instalar el paquete npm desde un script en python?

Cuando uso subprocess.Popen(["node", "app.js"]) está bien .
Cuando uso subprocess.Popen(["npm", "install", "open"]) está generando un error .

Lo siento, pero Google y DuckDuckGo no son mis amigos de hoy (

El problema principal : la instalación local automática requería paquetes para mi pequeña utilidad porque los paquetes globales no funcionan en Windows.

PD. Tengo que hacer esta pregunta porque estoy tratando de desarrollar un complemento para Sublime Text 2.

Este es el error en la consola de Python Sublime :

 Reloading plugin …\stsync.py Traceback (most recent call last): File ".\sublime_plugin.py", line 103, in create_application_commands cmds.append(class_()) File ".\stsync.py", line 16, in __init__ File ".\subprocess.py", line 633, in __init__ File ".\subprocess.py", line 842, in _execute_child WindowsError: [Error 2] 

línea 16: subprocess.Popen(["node", "npm", "install", "open"])


Si cambio la línea 16 a subprocess.Popen ([“node”, “npm”, “install”, “open”]) , la secuencia de comandos de python invocará con éxito el terminal nodejs, pero fallará con el error:
cannot find npm module
error de nodejs

establece el argumento de shell en True

 subprocess.Popen(["node", "npm", "install", "open"], shell=True) 

En Windows, muchos de los “binarios” de Node.js en realidad tienen el sufijo de la extensión de nombre de archivo .cmd , que por cualquier motivo durante la invocación a través de subprocess.Popen , no se expande (aunque PATHEXT pueda contener .cmd ).

Entonces, para una solución adecuada (que no use shell=True ), intente agregar .cmd a los binarios Node.js necesarios:

 Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:01:18) [MSC v.1900 32 bit (In tel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import subprocess >>> subprocess.Popen(['npm.cmd', 'install'])  >>> npm ERR! install Couldn't read dependencies 

Por supuesto, produce un error porque no tengo un package.json en ese directorio. Vuelva a intentarlo utilizando otros progtwigs de uso común, como el webpack :

 >>> subprocess.Popen(['webpack']) Traceback (most recent call last): File "", line 1, in  ... FileNotFoundError: [WinError 2] The system cannot find the file specified 

Oh cierto, agrega ese .cmd :

 >>> subprocess.Popen(['webpack.cmd'])  >>> No configuration file found and no output filename configured via CLI option