【发布时间】: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