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 タグがあります。シェルを介してこのスクリプトを実行すると、完全に機能します。ただし、IIS (7) を実行すると、出力が空のように見えます。
Popen の出力を PIPE ではなくファイルに出力しようとしました。繰り返しますが、コマンド ラインから実行した場合は機能しましたが、IIS を介して実行した場合は機能しませんでした。
何か案は?
編集:
@Wooble のアドバイスに従って、[0] を通信の呼び出しから削除して git エラーを確認したところ、「'git' は内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません」という謎めいたエラーが見つかりました。もちろん、システムには git がインストールされています。前述したように、スクリプトはコマンド ラインから直接実行すると機能します。
無駄に、私は試しました:
- git 実行可能ファイルのフル パスを使用するようにコマンドを設定する
- git 実行可能ディレクトリのフル パスを python の sys.path に追加する
- 実際の git 実行可能ファイルを作業ディレクトリにコピーすると、「git が認識されませんでした」というエラーは解消されましたが、空の結果が得られました。
助けてください!!