我得到了:
错误响应错误代码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文件一样链接。甚至谷歌都不能告诉我更多。
由于
答案 0 :(得分:0)
.pyc
文件是编译的Python脚本,意味着可以自己运行。我确信CGIHTTPServer
无法运行已编译的Python文件,只能运行.py
扩展名的脚本。
有没有理由不能使用.py
?
答案 1 :(得分:0)
您需要编写一个小包装器(在普通的python中)将其他代码作为模块加载。
有关详细信息,请参阅python教程[1]及其注释:
从“.pyc”读取程序时,程序运行速度不快 “.pyo”文件,而不是从“.py”文件中读取的文件;唯一的事情 关于“.pyc”或“.pyo”文件的速度更快 他们被装上了。
当通过在命令行上给出其名称来运行脚本时, 脚本的字节码永远不会写入“.pyc”或“.pyo”文件。 因此,可以通过移动大部分脚本来减少脚本的启动时间 它的代码到一个模块,并有一个导入的小引导脚本 那个模块。
仅供参考 - 我刚刚使用脚本和编译版本测试了CGIHTTPServer
相同的脚本。我收到了你注意到的错误,当我试图跑的时候
命令行上的两个版本,运行打印的.py
版本
预期的输出,并运行.pyc
版本引起了一堆
要在终端上打印的垃圾(我没有费心去调查
确切的来源)。总之 - 仔细检查您是否可以运行程序
命令行作为基本测试。