我只是创建了一个python服务器:
python -m SimpleHTTPServer
我有一个.htaccess(我不知道它对python服务器是否有用) 用:
AddHandler cgi-script .py
Options +ExecCGI
现在我正在编写一个简单的python脚本:
#!/usr/bin/python
import cgitb
cgitb.enable()
print 'Content-type: text/html'
print '''
<html>
<head>
<title>My website</title>
</head>
<body>
<p>Here I am</p>
</body>
</html>
'''
我将test.py(我的脚本名称)改为执行文件:
chmod +x test.py
我使用此地址在firefox中启动:(http://)0.0.0.0:8000/test.py
问题,脚本没有执行......我在网页上看到代码...... 服务器错误是:
localhost - - [25/Oct/2012 10:47:12] "GET / HTTP/1.1" 200 -
localhost - - [25/Oct/2012 10:47:13] code 404, message File not found
localhost - - [25/Oct/2012 10:47:13] "GET /favicon.ico HTTP/1.1" 404 -
如何简单地管理python代码的执行?是否可以在python服务器中编写执行python脚本,就像这样:
import BaseHTTPServer
import CGIHTTPServer
httpd = BaseHTTPServer.HTTPServer(\
('localhost', 8123), \
CGIHTTPServer.CGIHTTPRequestHandler)
### here some code to say, hey please execute python script on the webserver... ;-)
httpd.serve_forever()
或其他什么......
答案 0 :(得分:6)
您使用CGIHTTPRequestHandler
走在正确的轨道上,因为.htaccess
文件对内置的http服务器没有任何意义。有一个CGIHTTPRequestHandler.cgi_directories
变量,指定可执行文件被认为是cgi脚本(here is the check itself)的目录。您应该考虑将test.py
移至cgi-bin
或htbin
目录并使用以下脚本:
的 cgiserver.py:强> 的
#!/usr/bin/env python3
from http.server import CGIHTTPRequestHandler, HTTPServer
handler = CGIHTTPRequestHandler
handler.cgi_directories = ['/cgi-bin', '/htbin'] # this is the default
server = HTTPServer(('localhost', 8123), handler)
server.serve_forever()
的的cgi-bin / test.py:强> 的
#!/usr/bin/env python3
print('Content-type: text/html\n')
print('<title>Hello World</title>')
你最终应该:
|- cgiserver.py
|- cgi-bin/
` test.py
使用python3 cgiserver.py
运行并向localhost:8123/cgi-bin/test.py
发送请求。欢呼声。
答案 1 :(得分:0)
您是否尝试过使用Flask?它是一个轻量级的服务器库,使这非常容易。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return '<title>Hello World</title>'
if __name__ == '__main__':
app.run(debug=True)
返回值(在本例中为<title>Hello World</title>
)呈现为HTML。您还可以将HTML模板文件用于更复杂的页面。
这是一个很好的,简短的youtube tutorial,可以更好地解释它。
答案 2 :(得分:0)
您可以使用更简单的方法,并使用--cgi
选项启动http服务器的python3版本:
python3 -m http.server --cgi
如命令所指出:
python3 -m http.server --help