添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

从Python脚本中运行npm脚本。获得不一致的行为

0 人关注

我有一个包含一些Python脚本的目录。 在这个目录中,有一些子目录,形式为 "a/b/c1"、"a/b/c2"、...、"a/b/cn "等。 这些目录中的每一个都是一个npm包,其中的 package.json 文件中的一个脚本名为 my_script

在装有我的Python脚本的目录中,我可以从终端运行以下命令,很好。

npm run my_script --prefix a/b/c1

然而,在我的Python脚本中,我做的事情大致如下。

bashCmd = ['npm', 'run', 'my_script', '--prefix', 'a/b/c1']
process = subprocess.Popen(bashCmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
output, error = process.communicate()
print(output)
print(error)

替换代码4】的结果是来自npm的消息,告诉你关于传递给它的参数的指示。

Usage: npm <command>
where <command> is one of:
    access, adduser, audit, bin, bugs, c, cache, ci, cit,...

据我所知,我正在运行同一组指令,一个来自Python,一个来自npm,但得到的结果不同。

谁能帮我解释一下这个问题?

python
node.js
npm
JJE
JJE
发布于 2021-05-19
1 个回答
JJE
JJE
发布于 2021-05-19
已采纳
0 人赞同

看来我可能是看了一些旧的文档,或者是误解了我对 subprocess.Popen() 的理解。 我的印象是,传递给这个函数的输入应该是一个字符串的列表,如果你直接在终端上输入命令,每个字符串之间通常会有一个空格。 如果你只是把正常的命令作为输入,像下面这样传递,程序就会正确执行。

bashCmd = ['npm run my_script --prefix a/b/c1']