【问题标题】:How to call main() of a python script with arguments from mod_python.publisher?如何使用来自 mod_python.publisher 的参数调用 python 脚本的 main()?
【发布时间】:2009-12-22 01:36:39
【问题描述】:

我使用了一个 mod_python 发布者函数,它使用自定义构建的 argv 列表调用另一个 python 脚本的 main() 函数。当我从 shell 命令行执行发布者脚本时,它可以工作。但是当我通过 apache2 和 mod_python 尝试它时,我得到了 main 不带参数的错误(如下所示)。


File "/var/www/wabaServ/waba.py", line 15, in index
    aba.main([ "aba.py","-i", "-b"])

TypeError: main() takes no arguments (1 given)

aba.py 中的

main() 定义为:

def main(argv=None):
 --code--

注意:如果没有传递list参数,aba.main()会从mod_python执行。

mod_python 发布者函数如下所示:

import sys
sys.path.append("/u/scripts")
import aba
from cStringIO import StringIO

def index():

    old_stdout = sys.stdout
    sys.stdout = mystdout = StringIO()
    aba.main([ "aba.py","-i", "-b"])
    sys.stdout = old_stdout
    return(mystdout.getvalue())

【问题讨论】:

  • 必须有一些其他代码(大概在aba.py 中)改变其main 的绑定——否则你描述的症状是不可能的。
  • 或者您在mod_python 中存在配置问题,并且您实际上并没有运行您声称正在运行的程序。请将sys.path 转储到日志文件中,以确认您确实在运行您认为应该运行的程序。

标签: python mod-python


【解决方案1】:

第一个日志语句说:

aba.main([ "aba.py","-i", "-b"])

你说 main 定义为:

def main(argv=None):

因此,aba 作为第一个参数传入 main(),它占用了 argv 参数,然后没有任何参数可以传入该列表。

我认为这与mod_python 无关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    • 2017-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多