使用Python子进程运行npm命令
问题内容:
我正在尝试使用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
我已经尝试将yuidoc和npm所在的文件夹添加到python的sys.path中,但这没有用。
ps,这有点类似于这个问题。
问题答案:
我需要shell=True
在check_call中指定。
subprocess.check_call('npm --help', shell=True)
subprocess.check_call('yuidoc --help', shell=True)