我在 Windows Server 2008 上使用以下 python 脚本:
import cgitb
import subprocess
cgitb.enable()
print "Content-Type: text/plain;charset=utf-8"
print
cmd = "git tag"
process = subprocess.Popen(cmd.split(), shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
git_output = process.communicate()[0]
print "git output = %s" % git_output
事实上,有一些 git 标签。通过 shell 运行此脚本可以完美运行。但是,当通过 IIS (7) 运行时,输出似乎为空。
我尝试将 Popen 输出定向到文件而不是 PIPE。同样,从命令行运行时工作,通过 IIS 运行时不起作用。
有任何想法吗?
编辑:
按照@Wooble 的建议,我从调用通信中删除了 [0] 以查看 git 错误,并且确实发现了神秘错误“'git' 未被识别为内部或外部命令、可运行程序或批处理文件。” 当然 git 安装在系统上,正如我所说的脚本在直接通过命令行运行时有效。
无济于事,我尝试了:
- 将命令设置为使用 git 可执行文件的完整路径
- 将git可执行目录的完整路径添加到python的sys.path
- 将实际的 git 可执行文件复制到工作目录 - 这消除了“git not Recognized”错误,但仍然产生空结果!
请帮忙!!