CGIHTTPServer: 错误代码 403
我遇到了一个问题:
错误响应,错误代码403。信息:CGI脚本不可执行 ('/cgi-bin/main.pyc')。错误代码解释:403 = 请求被禁止——即使有授权也没用。
我在尝试运行一个编译过的Python脚本(.pyc文件)在Python的CGIHTTPServer上时出现了这个问题。普通的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
你需要写一个小的包装器(用普通的Python)来加载其他代码作为模块。
想了解更多细节,可以看看Python教程[1]及其评论:
程序从“.pyc”或“.pyo”文件运行并不会比从“.py”文件运行快;“.pyc”或“.pyo”文件唯一快的地方是它们加载的速度。
当你在命令行中通过名字运行一个脚本时,这个脚本的字节码不会被写入“.pyc”或“.pyo”文件。因此,通过把大部分代码放到一个模块里,并用一个小的启动脚本来导入这个模块,可以减少脚本的启动时间。
顺便说一下,我刚刚用一个脚本和那个脚本的编译版本测试了CGIHTTPServer。我遇到了你提到的错误,当我在命令行中运行这两个版本时,运行.py
版本输出了预期的结果,而运行.pyc
版本则在终端上打印了一堆垃圾(我没有去调查具体原因)。总之,作为基本测试,确保你能在命令行中运行一个程序。
0
.pyc
文件是经过编译的 Python 脚本,主要是为了独立运行的。我比较确定的是 CGIHTTPServer
不能运行编译后的 Python 文件,只能运行后缀为 .py
的脚本。
有没有什么原因让你不能使用 .py
文件呢?