CGIHTTPServer:错误代码403

时间:2011-07-22 03:53:23

标签: python cgi

我得到了:

  

错误响应错误代码403.消息:CGI脚本不可执行   ( '/cgi-bin/main.pyc')。错误代码说明:403 =请求   禁止 - 授权无效。

同时在python CGIHTTPServer上运行已编译的python脚本(.pyc)。普通的python脚本(.py)工作正常。 cgi服务器看起来像这样:

from BaseHTTPServer import HTTPServer
from CGIHTTPServer import CGIHTTPRequestHandler

class CGIServer(HTTPServer):
    def __init__(self, (hostname,port), handler):
        HTTPServer.__init__(self, (hostname, port), handler)
srvaddr = ("", 8000)
cgisrv = CGIServer(srvaddr,CGIHTTPRequestHandler)
cgisrv.serve_forever()

有没有可能让这个在Windows上工作? .pyc文件像windows下的.py文件一样链接。甚至谷歌都不能告诉我更多。

由于

2 个答案:

答案 0 :(得分:0)

.pyc文件是编译的Python脚本,意味着可以自己运行。我确信CGIHTTPServer无法运行已编译的Python文件,只能运行.py扩展名的脚本。

有没有理由不能使用.py

答案 1 :(得分:0)

您需要编写一个小包装器(在普通的python中)将其他代码作为模块加载。

有关详细信息,请参阅python教程[1]及其注释:

  •   

    从“.pyc”读取程序时,程序运行速度不快   “.pyo”文件,而不是从“.py”文件中读取的文件;唯一的事情   关于“.pyc”或“.pyo”文件的速度更快   他们被装上了。

  •   

    当通过在命令行上给出其名称来运行脚本时,   脚本的字节码永远不会写入“.pyc”或“.pyo”文件。   因此,可以通过移动大部分脚本来减少脚本的启动时间   它的代码到一个模块,并有一个导入的小引导脚本   那个模块。

仅供参考 - 我刚刚使用脚本和编译版本测试了CGIHTTPServer 相同的脚本。我收到了你注意到的错误,当我试图跑的时候 命令行上的两个版本,运行打印的.py版本 预期的输出,并运行.pyc版本引起了一堆 要在终端上打印的垃圾(我没有费心去调查 确切的来源)。总之 - 仔细检查您是否可以运行程序 命令行作为基本测试。

[1] http://docs.python.org/release/1.5.1p1/tut/node43.html