Python noob here: En un servidor web habilitado para Python, ¿cómo uso Python?

#!/usr/bin/env python # -*- coding: UTF-8 -*- # enable debugging import cgitb cgitb.enable() print "Content-Type: text/plain;charset=utf-8" print print "Hello World!" 

Mi objective es reemplazar PHP con Python. Soy bastante bueno con PHP y puedo usar Python en mi propia máquina local, pero no puedo hacer que funcione en mi servidor web. Mi servidor web dice que admiten Python, así que debo estar haciendo algo mal.

Ahora, Python está asociado con CGI. ¿Los archivos de Python tienen que ir a mi carpeta cgi-bin? Nunca he visto un archivo web con una extensión py o una extensión cgi, no sé cómo funcionan estas cosas, realmente solo estoy familiarizado con PHP.

Vi la primera hora de la clase “Learn Python” de Google y eso solo habla de ejecutar Python localmente.

🙁 Lo siento, estoy tan nuboso, por favor, arreglarme.

Eso es un script CGI perfectamente aceptable. Si está utilizando Apache, tendrá que ir a su cgi-bin, deberá ser ejecutable (puede que esté equivocado en esto), y debería nombrarlo con la extensión común para el lenguaje .py , o con .cgi .

Si puede controlar qué archivos considerará CGI su servidor web, puede colocar el archivo donde desee. Es probable que no puedas controlar eso. Puede ver más información sobre CGI en Apache aquí: http://httpd.apache.org/docs/2.2/howto/cgi.html

La idea básica es que Apache no tratará un archivo como un archivo CGI a menos que se cumplan dos condiciones: el cgi-script deberá activarse mediante las directivas AddHandler o SetHandler , y ExecCGI deberá habilitarse en la directiva de Options . Normalmente, esto no está disponible para el usuario en un entorno de alojamiento compartido.

EDITAR: Para aclarar, CGI es solo un mecanismo para que usted escriba scripts en cualquier lenguaje arbitrario, y haga que su servidor web los ejecute y envíe la salida de ese script a sus clientes. No es un enfoque recomendado para nada más que un simple script, debido al hecho de que en cada solicitud individual, el servidor activará una nueva instancia de su intérprete. Para Python, la mejor solución sería un marco compatible con WSGI , como Flask , Bottle o Django . Los dos primeros son micro-marcos que intentan mantenerse fuera de tu camino, mientras que Django es un marco de stack completa que proporciona una gran cantidad de pegamento.

La forma Python de hacer aplicaciones web tiene más en común con algo como CodeIgniter o Cake PHP.

Comienza con Django , solo prueba el tutorial. La queja más común acerca de Django por parte de los desarrolladores de PHP es que Django no te permitirá mezclar código y HTML, y ES una buena cosa.

Por supuesto que puedes hacer CGI antiguo, pero es la manera más difícil.

Dependiendo de su compañía de alojamiento web, la línea #! / Usr / bin / env python puede necesitar leer un poco diferente. Algunos incluyen un número de versión en “python” y otros tienen python en un directorio diferente. Tendrá que consultar con su proveedor.

Además, debe otorgar al mundo permiso de ejecución (NO escritura) en el archivo, ya que está DESEANDO que la gente ejecute el script.

¿Qué sucede ahora si carga ese código con una extensión .cgi o .py en su carpeta cgi-bin y luego accede a él en su navegador?

Además, si buscas en Google “python cgi” encontrarás muchos tutoriales. Para cosas simples sin toneladas de aciertos, cgi funcionará bien, aunque como han dicho otros, hay otros mecanismos que son mucho más eficientes en recursos cuando eso es necesario.

No puede mezclar python y html en la misma página, pero hay mecanismos (vea python y server side include o SSI) para escribir una página html con una marca de posición que llame a su progtwig python y ponga la respuesta del progtwig python allí. El resultado se muestra html.