2012-04-16 9 views
11

Soy un desarrollador aficionado con poca experiencia en PHP.Programación web Python

Recientemente aprendí Python, tengo que admitir que es increíble como lenguaje de programación y sus geniales bibliotecas, pero usar eso para desarrollo web parece ser un gran dolor en el culo. En cuanto a lo que leo, tengo que usar CGI, mod_wsgi, etc. para implementar (http://docs.python.org/howto/webservers.html), reiniciar el servidor para ver los cambios (http: // stackoverflow.com/questions/581038/python-web-programming)

Mi pregunta es, Python se utiliza ampliamente para el desarrollo web, ¿Por qué no puede ser tan simple como PHP?

es decir, me encantaría escribir index.py:

print """ 
<html> 
<head> 
<title>Hello world</title> 
</head> 
<body> 
Hello world 
</body> 
</html>""" 
+1

Porque no lo ha hecho. –

+4

No hice PHP tampoco – Jelly

+7

@jeremynealbrown No es una mala pregunta ... Lo veo como un nuevo Pythonista tratando de descubrir qué parte de la imagen se está perdiendo. Me tomó un poco de tiempo encontrar las piezas que hicieron de Python un lenguaje web realmente bueno. Tal vez la pregunta podría formularse mejor ... – Endophage

Respuesta

6

[Si] Python se utiliza ampliamente para el desarrollo web, ¿Por qué no puede ser tan simple como PHP? es decir, me gustaría escribir index.py ...

Python puede ser tan simple como PHP, como por su ejemplo. La forma más sencilla de hacer el trabajo anterior es el uso de CGI (y llame a su archivo index.cgi en lugar de index.py, a continuación, la secuencia de comandos funcionará bien A pesar de que realmente debe especificar el tipo de contenido en primer lugar, de esta manera:.

print 'Content-type: text/html' 

esto se aplicaría en PHP tanto como Python. Python's CGI module habrá que pueda ponerse en marcha muy rápidamente.

en cuanto a lo que he leído, he de usar CGI, mod_wsgi, etc., para desplegar

Normalmente elegiría uno u otro, y de forma realista, lo más probable es que elija un marco basado en el WSGI más moderno y no se preocupe por las cosas de bajo nivel. Pero si no quiere, no necesita molestarse con estas interfaces de bajo nivel.

reiniciar el servidor para ver los cambios

Probablemente no

. Tener que reiniciar el servidor es una limitación de la configuración del marco y la implementación, y generalmente no es necesario. Si usa mod_python, esto puede aplicarse, pero generalmente no (muchas estructuras admiten la autocarga, por ejemplo).

Python tiene una gran cantidad de recursos para el desarrollo web. Existen sistemas básicos (por ejemplo, CGI, mod_wsgi), sistemas ligeros (por ejemplo, CherryPy) y marcos enteros (por ejemplo, Zope). Puede elegir el que mejor se adapte a sus necesidades.

Ser capaz de crear un archivo simple y producir algunos resultados puede ayudar a que algo funcione rápidamente, pero en realidad no es un signo de un marco rico, maduro y funcional. Claro, puedes comenzar a mostrar algo enseguida, pero ¿entonces qué? De repente, tendrá que importar o escribir todos los mismos tipos de funcionalidades que proporcionan los marcos web. Para una aplicación web no trivial, necesita un marco no trivial.

Por ejemplo, algo así como Django le dará un marco de persistencia, interfaz de administración generada automáticamente, un lenguaje tentador, sistema de envío de URL y mucho más. Puede centrarse en la lógica de su aplicación y no preocuparse por los detalles de nivel inferior. Django es un buen lugar para comenzar, ya que tiene una gran documentación y el tutorial te ayudará a avanzar rápidamente.

10

En primer lugar a su pregunta sobre por qué Python no es tan fácil para el desarrollo web como PHP: No ha sido diseñado para ello. PHP ha trabajado mucho para que sea un buen lenguaje para escribir páginas HTML, incluido mod_php para apache. Python, si bien es un lenguaje web muy capaz, también es capaz de mucho más que PHP. Por ejemplo, la mayoría del software de Dropbox, tanto el cliente de escritorio como el código del lado del servidor es Python. Utilizo Python en mi trabajo diario y lo he usado para integrar el código C heredado en el nuevo código de Python a través de Cython.

En marcha. Existen varios frameworks de Python que pueden hacer que su experiencia de desarrollo web sea mucho menos complicada. Dos de las notas que son ampliamente utilizadas profesionalmente y por los aficionados son Django y Pyramid (anteriormente Pylons). Como nuevo usuario, le recomiendo que comience con Django, es una excelente manera de comenzar y se puede utilizar para sitios grandes y complejos (y más) a medida que su experiencia vaya creciendo.

Encontrará que Django y Pyramid incluyen "servidores de desarrollo". Estos son servidores web escritos en Python que están empaquetados con los marcos para permitir un desarrollo más rápido. Con estos servidores de desarrollo puede comenzar a usarlo muy rápido.

También hay servidores web puros de Python que son de hecho increíblemente rápidos, robustos y muy listos para la producción. Para implementar una aplicación Pyramid en Gunicorn, un muy buen servidor Python, solo toma un par de líneas adicionales en su configuración Pyramid. Por lo general, invierte el proxy a estos servidores puros de Python a través de Apache o Nginx.

Si desea ir a la ruta del servidor Apache, solo necesita mod_wsgi. Servir en un sitio de Python con mod_python o como CGI es una forma algo obsoleta de hacerlo. WSGI define un estándar para que Python maneje las solicitudes web, por lo que mod_wsgi permite a apache pasar solicitudes a su aplicación Python en el formato esperado.

Cuando se trata de implementar Python a un proveedor de alojamiento web, debe mirar un poco más lejos que para el alojamiento de PHP, pero hay un good list mantenido en la wiki oficial de Python. Los 4 enlaces en la parte inferior proporcionaron diferentes listas para cumplir con sus requisitos.

+0

Buen resumen de Endophage. Solo quiero agregar que el novato de Python, al haber encontrado las cosas buenas que menciona, puede sentirse decepcionado nuevamente cuando llega el momento de implementar el sitio en un servidor host. Descubrí que mi proveedor de alojamiento económico acomoda PHP fácilmente, pero no Python. – Smandoli

+0

@Smandoli Ese es un problema común, sin embargo, la wiki oficial de Python mantiene una lista sustancial de hosts compatibles con Python, la he agregado al final de la publicación. – Endophage

+0

Hay lugares donde puede alojar aplicaciones de Python de forma gratuita. He mencionado algunos en mi respuesta. – masnun

0

PHP fue creado exclusivamente para el desarrollo de aplicaciones web, para ser más precisos en la creación de Página (s) personal (es) de donde provienen P, H y P. Python por otro lado es un lenguaje de programación de propósito general. Estaba destinado a muchas cosas (y tenía que incluir todo tipo de baterías para todo tipo de tareas). Por lo tanto, no espere que Python se comporte de la misma manera que PHP.

Los scripts independientes de python requerirán bastante esfuerzo para ejecutarse. Sugeriría elegir un marco web. Es posible que desee aprender django (https://www.djangoproject.com/) para comenzar. Es posible que también desee probar Google App Engine. Además de heroku, dotcloud, nuagehq y otros hosts en la nube, hacer que el despliegue de python (y django) sea muy simple y fácil.

Espero que disfrutes desarrollando aplicaciones web con Python. :)

+0

Dicho sea de paso, el spammer -1 parece haber atacado de nuevo ... Juro que alguien está rastreando mis respuestas y luego votando a todos en la publicación ... – Endophage

+2

PHP significa PHP: preprocesador de hipertexto, ¿no? – VictorKilo

+0

@Endophage Me sorprendió recibir un voto negativo. Ahora eso explica :) – masnun

1

Como han dicho otros, google "python web framework". Hay bastantes, todos son bastante diferentes. Para que comiences más rápido (horas), miraría bottle.py.

1

Python se utiliza ampliamente para el desarrollo web, ¿Por qué no puede ser tan simple como PHP?

Porque Hello World no escala. Porque Python no es PHP.De Wikipedia [1][2]:

  • Python es un propósito general, de alto nivel de lenguaje de programación
  • PHP es un lenguaje de script del lado del servidor de propósito general diseñada originalmente para el desarrollo Web

Python es genial, python es DRY amigable. Desafortunadamente, cuando se trata de desarrollo web, DRY no es suficiente. Si realmente desea hacer las cosas (de manera eficiente): don't reinvent the wheel. Eso fue muy bien resumido here:

Lo que parece la mayor vergüenza que me importa es que todo el mundo se está reconstruyendo actualmente estas cosas una y otra vez y la racionalización como una especie de salsa ventaja competitiva secreta cuando en realidad es la infraestructura - cosas que Realmente debería estar estandarizado para que pueda realmente hacer las cosas nuevas e interesantes.

lo tanto, utilizar la herramienta adecuada para el trabajo correcto, si vas el camino pitón:

Sí que es más complicado que un hola mundo pero recuerde there ain't no such thing as a free lunch. Usted es un desarrollador aficionado, usted no es un programador profesional y un administrador de sistemas y un administrador de base de datos y un diseñador y la arquitectura del sistema, etc. No sea demasiado tímido para stand on the shoulders of giants porque ahora, es gratis. Por favor, no construyas nada menos que a modern web app.

Además, PHP ya no es tan popular como lo era [1][2], cf. PHP's fractal bad design, PHP hammer, etc.