从单独的程序调用django管理命令

时间:2016-04-11 15:30:59

标签: python django

我在一个django项目中有一个自定义的django管理命令,我想从另一个django项目中调用它。两者都使用virtualenv。我还需要检查命令的输出。

我想调用的命令看起来像这样:

/home/path/to/bin/python /home/path/to/manage.py my-command --input-csv=/tmp/w2qGM1 --input-type=csv

/tmp/w2qGM1是我已创建的临时csv文件。

我试过

subprocess.call

subprocess.call(CMD, shell=True,  env={
                'PYTHONPATH': os.pathsep.join(sys.path)})

subprocess.check_output

output = subprocess.check_output(
    shlex.split(CMD),
    shell=True,
    stderr=subprocess.STDOUT,
    env={'PYTHONPATH': os.pathsep.join(sys.path)}
)

subprocess.Popen

args = shlex.split(CMD)
output = subprocess.Popen(args).wait()

返回

Unknown command: 'my-command'
Type 'manage.py help' for usage.

我尝试将cd /path/to/project/with/management/command/ && source bin/activate添加到项目django设置的提取中。

我还应该提到我在PYTHONPATH中拥有所有正确的路径,并且从命令行以编程方式运行时该命令有效。

两个项目都必须使用djagno 1.7。

0 个答案:

没有答案