0

我已经用 mod_wsgi 和 apache 设置了 django。现在想用http来完成svn更新任务。你知道,如果我们要更新服务器上的特定网站,我们必须ssh到服务器并cd到目录并使用svn更新,这太复杂了,所以我想发送一个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.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 回答