使用Python子进程运行npm命令

Eva*_*oky 10 python node.js npm yuidoc

我正在尝试使用YUIDOC自动生成文档,但我有一个大量使用python的服务器端框架,所以我试图在python脚本中自动化所有内容.我能够让node命令运行正常,但每当我尝试使用npm安装的东西时,python就不高兴了.我的项目使用Buildout而不是virtualenv,但理想情况下我希望能够从一个独立的python文件中运行这些命令.

也许一些代码可以帮助解释我的情况:

import subprocess
subprocess.check_call('node --help')

#SUCCESS

import subprocess
subprocess.check_call('npm --help')

#FAIL
#WindowsError: [Error 2] The system cannot find the file specified

import subprocess
subprocess.check_call('yuidoc --help')

#FAIL
#WindowsError: [Error 2] The system cannot find the file specified
Run Code Online (Sandbox Code Playgroud)

我已经尝试将yuidoc和npm东西所在的文件夹添加到python的sys.path中,但是这不起作用.

ps,这是一个与这个问题类似的问题.

Eva*_*oky 14

我需要shell=True在check_call中指定.

subprocess.check_call('npm --help', shell=True)

subprocess.check_call('yuidoc --help', shell=True)
Run Code Online (Sandbox Code Playgroud)

  • [不建议通过shell调用](/sf/answers/222074191/)。我建议 `check_call('npm.cmd --help')`,它来自您提到的相关线程中的[这个答案](/sf/answers/3503181041/) (2认同)