如何使用 mod_python.publisher 中的参数调用 python 脚本的 main() ?

发布于 2024-08-15 19:48:27 字数 811 浏览 5 评论 0原文

我使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

狂之美人 2024-08-22 19:48:27

第一个日志语句说:

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

并且您说 main 被定义为:

def main(argv=None):

因此,aba 作为第一个参数传递到 main() 中,该函数占用 argv 参数,然后是没有剩下的参数可以传递该列表。

我认为这与 mod_python 没有任何关系。

The first logging statement says:

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

And you say main is defined as:

def main(argv=None):

Therefore aba is passed in as the first argument into main() which takes up the argv 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文