如何使用 mod_python.publisher 中的参数调用 python 脚本的 main() ?
我使用 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--
注意: 如果未传递列表参数,则 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())
I use a mod_python publisher function which calls the main() function of another python script with a custom built argv list. When I execute the publisher script from shell command line it works. But when I tried it through apache2 with mod_python, I get the error (shown below) that main takes no arguments.
File "/var/www/wabaServ/waba.py", line 15, in index
aba.main([ "aba.py","-i", "-b"])
TypeError: main() takes no arguments (1 given)
main() in aba.py is defined as:
def main(argv=None):
--code--
Note: if the list argument is not passed, aba.main() gets executed from mod_python.
The mod_python publisher function looks like:
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())
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
第一个日志语句说:
并且您说 main 被定义为:
因此,
aba
作为第一个参数传递到 main() 中,该函数占用argv
参数,然后是没有剩下的参数可以传递该列表。我认为这与
mod_python
没有任何关系。The first logging statement says:
And you say main is defined as:
Therefore
aba
is passed in as the first argument into main() which takes up theargv
argument and then there's no arguments left to pass that list in.I don't think this has anything to do with
mod_python
.