django popen“语法无效”

时间:2012-10-09 09:53:16

标签: django popen

我是Django的新手。我想从某个视图运行一些命令。类似的东西:

 python /path/to/the/script/run.py -id 11 --user root --run_digital_id 29 --workflow map --lib_group library.yaml --log log.conf

我使用此方法调用:

def run_in_background(cmd):
    logging.info('running ' + cmd)
    p = subprocess.Popen(cmd, shell=True, stdout=PIPE, stderr=PIPE)
    output, errors = p.communicate()
    print output
    print errors
    logging.debug(output)
    logging.debug(errors)

该命令被传递给方法run_in_background()。当我复制命令并在终端上运行时,它运行良好。但是,当我从Django的某些视图中运行它时,它会报告:

Traceback (most recent call last):
  File "/path/to/the/script/run.py", line 11, in ?
    import conf, util
  File "/path/to/the/script/conf.py", line 11
    class Settings():
                   ^
SyntaxError: invalid syntax

呃,当我从一些'普通'python代码调用它时,run_in_background方法也正常工作。

错误位置是我程序的第一行。我怀疑路径有问题......但是经过长时间的搜索,我没理由。请帮忙。感谢。

1 个答案:

答案 0 :(得分:1)

似乎这就是解决方案!

在某些python版本中,如class Settings():这样的空括号定义类无效,您可能希望将其更改为class Settings(object):