¿Cómo ejecutar el script de python en el BaseHTTPSERVER creado por python?

Simplemente he creado un servidor python con:

python -m SimpleHTTPServer 

Tuve un .htaccess (no sé si es útil con el servidor Python) con:

 AddHandler cgi-script .py Options +ExecCGI 

Ahora estoy escribiendo un simple script en python:

 #!/usr/bin/python import cgitb cgitb.enable() print 'Content-type: text/html' print '''   My website   

Here I am

'''

Hago test.py (nombre de mi script) un archivo ejecutado con:

 chmod +x test.py 

Estoy lanzando Firefox con esta dirección: (http: //) 0.0.0.0:8000/test.py

Problema, el script no se ejecuta … Veo el código en la página web … Y el error del servidor es:

 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 - 

¿Cómo puedo gestionar la ejecución del código de Python simplemente? ¿Es posible escribir en un servidor de Python para ejecutar el script de Python como con algo como eso?

 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() 

O algo mas…

Usted está en el camino correcto con CGIHTTPRequestHandler , ya que los archivos .htaccess no significan nada para el servidor http incorporado. Hay una variable CGIHTTPRequestHandler.cgi_directories que especifica los directorios en los que un archivo ejecutable se considera un script cgi ( aquí está la propia comprobación ). Debería considerar mover test.py a un directorio cgi-bin o htbin y usar el siguiente script:

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('Hello World') 

Deberías terminar con:

 |- cgiserver.py |- cgi-bin/ ` test.py 

Ejecute con python3 cgiserver.py y envíe solicitudes a localhost:8123/cgi-bin/test.py Aclamaciones.

¿Has intentado usar Flask ? Es una biblioteca de servidores ligera que hace esto realmente fácil.

 from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World' if __name__ == '__main__': app.run(debug=True) 

El valor de retorno, en este caso Hello World , se representa con HTML. También puede utilizar archivos de plantilla HTML para páginas más complejas.

Aquí hay un buen tutorial corto de youtube que lo explica mejor.