0

mod_wsgi と apache で django をセットアップしました。ここで、http を使用して svn update タスクを完了したいと考えています。サーバー上の特定の Web サイトを更新する場合は、サーバーに ssh し、ディレクトリに cd して svn update を使用する必要がありますが、これは複雑すぎるため、get 要求を送信して Python に実行させたいと考えています。私のために詰め込みます。

Debianでbashを実行でき、成功するという問題は次のとおりです。

import os

def hello(request):
    os.chdir("/var/www-chengtoo-new-Test/")
    os.system("svn update")
    os.chdir("/var/TestWebsiteTool/hello")
    os.mkdir("hahaha");
    return HttpResponse("hello")

「svn update」以外はすべて正常に動作します。誰でも私を助けることができますか?なぜそうなのかを知りたいだけです。ありがとうございました。

4

1 に答える 1

0

Pythonos.systemは、 を使用して独自のスレッド内でコマンドを実行し、最初に実行shしている の影響を受けません。chdir

したがって、基本的に、を呼び出すときはsvn update、OS 構成に応じて、システム ルートまたは他のディレクトリに対して実行される可能性があります。

次のことを行う必要があります。

os.system("cd /var/www-chengtoo-new-Test/; svn update")

私の意見では、これを処理するより良い方法はサブプロセスライブラリです。

import subprocess
subprocess.Popen("svn update", shell=True, cwd="/var/www-chengtoo-new-Test/")
于 2013-03-10T05:51:06.783 に答える