2012-04-23 15 views
5

Estoy usando wxPython desde hace aproximadamente 2 años para varios pequeños programas científicos que distribuyo a muchos colegas. Me gusta wxPython y ya estoy muy familiarizado con él, pero hay algunas cosas que me vuelven loco (no por wxPython, en realidad me gustaría seguir usándolo):Python Desktop Applications

1) Tengo muchos usuarios en diferentes Sistemas de operación. Sé que wxPython es una plataforma cruzada, pero ya no tengo nervios ni tiempo para conectar todos mis pequeños software (y más vendrán) cada vez a diferentes sistemas operativos. Especialmente no estoy usando algunos de ellos (Windows7, Mac), por lo que es difícil para mí resolver problemas y solicitudes de los usuarios.

2) Actualizamos bastante nuestro software (porque todo el tiempo nuevas ideas provienen de los usuarios y de nosotros mismos) lo que significa que debo generar todas las standalones de nuevo, cargarlas y para que los usuarios las desinstalen e instalen de nuevo. Desagradable ...

Ya estaba pensando en cambiar a Web Frameworks, pero hay algunos problemas. Primero, a muchos usuarios les gusta usar mi software sin conexión, p. cuando viajan o no tienen internet. Segundo, tenemos algunos datos en algunas bases de datos que NUNCA deberían ir a un servidor. Todo se trata de patentes y siempre será una discusión, por lo que prefiero que algunos de mis programas sean una aplicación de escritorio independiente para simplificar las cosas. Otros pueden estar en línea, no hay problema.

Así que, en general, me encantaría una solución basada en navegador, ya que todos tienen un navegador. Vi que algunas personas transportaban proyectos de Django como una aplicación de escritorio independiente, lo cual no fue una mala idea. También me enojó por Camelot, pero creo que esto es más bien para bases de datos. Camelot sería útil solo para algunas de mis herramientas, que son más bien una búsqueda de bases de datos y programas de extracción. Pero otro no usa bases de datos en absoluto.

¿Alguien puede sugerirme, cuál sería una buena solución para mis herramientas?

Respuesta

5

Puede usar, p. matraz para proporcionar una interfaz de usuario.

Así que solo escriba sus aplicaciones como normalmente, pero sin una GUI (normalmente debería separar la lógica y la GUI). Luego use, p. Flask (Me gusta mucho este microframework, pero también hay otros como Bottle) para escribir una interfaz de usuario en forma de un sitio web. Puede ejecutar este sitio web localmente (es decir, una línea de código: app.run() y luego abrirlo en el servidor web con la URL http://localhost:5000) o en un servidor web, p. con apache o nginx.

+0

Falta un ingrediente para esta respuesta aquí: https://www.reddit.com/r/Python/comments/21evjn/is_it_possible_to_deploydistribute_flask_as_an/. Habla sobre cómo distribuir la aplicación web –

2

¿Qué le parece usar Flex con Python? Su interfaz es portátil (ya que Flex crea archivos flash); y puedes usar Python para conectar la interfaz.

Además, puede decidir (en función de su aplicación) desplegarlos en la web o envolverlos como ejecutables nativos con Flex.

Su único desafío sería si decide empaquetar la aplicación para Windows, para asegurarse de empaquetar Python junto con ella correctamente (si fuera necesario).

1

Esto podría no coincidir con la forma en que los usuarios usan su aplicación, pero una opción sería crear una máquina virtual Linux (Virtualbox admite los sistemas operativos más comunes como hosts) y distribuirla en su lugar.

Esto le daría un objetivo único contra el que desarrollarse y, como bonificación, si observa el mecanismo de actualización de su distribución elegida (Apt, Yum, etc.) debería poder agregar su propio servidor como fuente y haga que la VM se mantenga actualizada sin que los usuarios necesiten hacer nada.

+0

Esa es una idea interesante e incluso encontré algo similar a mis herramientas usando una máquina virtual (http://www.dnalinux.com/). ¿Cómo se hace la GUI? ¿Puedo usar mi código anterior escrito con wxPython? – snowflake