如何从python脚本安装npm包?

2024-06-28 15:35:49 发布

您现在位置:Python中文网/ 问答频道 /正文

如何从python脚本安装npm包?在

当我使用subprocess.Popen(["node", "app.js"])时,可以
当我使用subprocess.Popen(["npm", "install", "open"])时,会抛出一个错误。在

抱歉,谷歌和DuckDuckGo今天不是我的朋友(

主要问题-我的小实用程序需要自动本地安装软件包,因为全局软件包在windows中不工作。在

PS.我不得不问这个问题,因为我正试图为Sublime Text 2开发一个插件。在

这是Sublime python控制台中的错误

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] 

第16行:subprocess.Popen(["node", "npm", "install", "open"])


如果我将第16行改为子流程.Popen([“node”,“npm”,“install”,“open”]) 然后python脚本将成功调用nodejs终端,但随后将失败,并出现错误:
cannot find npm module
nodejs error


Tags: installinpy脚本nodenpm错误line
2条回答

在Windows上,许多节点.js“二进制文件”实际上以.cmd文件扩展名作为后缀,在通过subprocess.Popen调用期间,无论出于什么原因,它都不会扩展(即使PATHEXT可能包含.cmd)。在

因此,为了获得正确的解决方案(不使用shell=True),请尝试将.cmd追加到节点.js需要二进制文件:

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'])
<subprocess.Popen object at 0x005E18B0>
>>> npm ERR! install Couldn't read dependencies

当然,它会抛出一个错误,因为我在那个目录中没有package.json。请使用其他常用程序重试,例如webpack

^{pr2}$

好吧,再加上.cmd

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

shell参数设置为True

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

相关问题 更多 >