¿Es posible crear una aplicación de escritorio usando django? – python django

Pregunta:


He visto proyectos como Atom, que utilizan tecnologías web para realizar apps de escritorio; sin embargo, me gustaría saber si esto es posible con django.

Si es posible, es práctico? En el sentido de que no será mucho más complicado que hacer una app web con este framework; dejando de lado que lo más probable es que será mas lento que una aplicación nativa.

La idea es no depender de Internet para poder utilizar la aplicación y aprovechar tecnologías web como HTML, CSS, JS y Django para desarrollarla.

Preguntado por: Javier Cárdenas

Comunidad

Sí, es posible. Como se indica en esta pregunta de StackOverflow en inglés y en los enlaces de la misma, tienes bastantes alternativas:

PyInstaller

PyInstaller empaqueta programas en Python en aplicaciones de escritorio para Windows, Linux, Mac OS X, FreeBSD, Solaris y AIX. Según su propia página web, sus principales ventajas sobre otras aplicaciones similares es que:

  • Funciona con Python 2.7 y 3.3-3.5.
  • Los ejecutables son más pequeños.
  • Utiliza el soporte del SO para cargar las bibliotecas dinámicas, asegurando la compatibilidad.

En la página de GitHub se explica cómo a partir de la versión 2.1 se pueden crear aplicaciones de escritorio desarrolladas con Django, y se muestra un pequeño ejemplo con código (en inglés).

DjangoKit

Nota: sólo funciona para aplicaciones Mac OS.

Es una posibilidad sugerida en la propia pregunta enlazada arriba, porque Hamza buscaba utilidades que no sólo funcionaran para Mac sino también para Windows y Linux.

El proyecto está alojado en GitHub, donde puedes encontrar un par de ejemplos y documentación (en inglés)… aunque parece que su desarrollo ha estado parado por casi 8 años.

cx_Freeze.

El primer enlace (en inglés) de esa pregunta es bastante descriptivo, en el Siddharta explica cómo consiguió crear una aplicación de escritorio (o mejor dicho simularla) siguiendo este método:

  • Desarrolló la aplicación web en Python con Django.
  • Usó cx_freeze para empaquetar todo en un ejecutable.
  • Utilizó sqlite3 como base de datos porque es embebida y no necesita instalación.
  • Configuró Toopfy para ejecutar Django por defecto.

Usando esta configuración, cx_Freeze junta el servidor, Django, sqlite3, el código de la aplicación y el intérprete de Python y los empaqueta en un ejecutable. La aplicación está preconfigurada para usar sqlite3 como base de datos y el servidor está preconfigurado para correr Django.

py2exe

Nota: sólo funciona para aplicaciones Windows.

En el segundo enlace (en inglés) de la pregunta, Joseph Jude explica que tuvo problemas con la solución de Shiddarta y con dbuilder.py y explica cómo utilizó py2exe para convertir sus aplicaciones en Python en aplicaciones de escritorio:

  • Importó todos los modulos requeridos de Django.
  • Integró su código con CherryPy.
  • Utilizó sqlite como base de datos.

En ese mismo enlace puedes encontrar el código paso a paso (con ejemplos de errores que encontró y la solución que les dio) y un enlace a Google Docs para bajarte una versión del proyecto.

py2app

Nota: sólo funciona para aplicaciones Mac.

Según la documentación oficial: py2app es un comando setuptools de Python que permite crear aplicaciones independientes, paquetes y plugins a partir de scripts de Python. py2app es similar en diseño y propósito a py2exe, pero en este caso para Mac OS X en lugar de Windows.

Puedes encontrar un ejemplo de integración de Django con py2app en el GitHub de Kevin London.

dbuilder.py

En la pregunta enlazada arriba, Massimo Fazzolari recomienda dbuilder.py en su respuesta, ya que dbuilder.py se creó especificamente para convertir código desarrollado en Django en aplicaciones de escritorio.

Según la documentación de la herramienta en GitHub, dbuilder.py es una utilidad que toma un proyecto en Django y organiza los archivos necesarios para crear una aplicación de escritorio, permitiendo diferentes opciones a la hora de crear la distribución.

En la página de GitHub se incluye amplia documentación sobre cómo usar la herramienta (en inglés sólo) y pequeños ejemplos.

Super Zippy

Nota: sólo funciona para aplicaciones Linux y Mac OS X.

Massimo Fazzolari también recomienda esta utilidad que toma paquetes de Python y sus dependencias de Python puras y lo convierte todo en un único fichero ejecutable.

Según la página web del proyecto, los únicos sistemas operativos soportados son Linux y Mac OS X pero debería funcionar en cualquier sistema operativo (aunque no se garantiza nada). Y tampoco aparece ninguna referencia a Django en particular, lo cual puede ser una mala señal.

El sitio de GitHub contiene código y ejemplos con demostraciones de cómo funciona la herramienta.

Fuente

Related Posts:

Python editor extension for laravel-admin
...
DreamFactory(tm) Scripting Components
...
Enhance PHP sprintf with Python-style named parameters
...
Python string slices in PHP
...
Non-standard PHP library (NSPL) – functional primitives toolbox and more
...
PHP client for Celery task queue
...
File Upload widget for jQuery.
...
Con Django ‘str’ object is not callable en class based-views – python django
Pregunta: Tengo este problema cuando quiero acceder a una URL que me dice que es str object is no callable seguramente tengo algo mal en ...
Abrir páginas web en python 3.5.X en la misma ventana – python python-3.x webbrowser
Pregunta: Buenas, he hecho un script para lanzar varias páginas web en una sola ventana, es decir, cada url en una pestaña sin embargo, firefox ...
Publicar proyecto en Python 3.5 con heroku – python django python-3.x
Pregunta: Hola tengo un proyecto hecho con Python 3.5 y Django 1.10 y quisiera publicarlo en HEROKU pero veo que solo soporta Python 2.7, ¿alguien ...
¿Porqué me sale error csrf verification failed? – django
Pregunta: Esta es mi vista: def validarcelda(request): error = '' success = False if request.method == 'POST': ...
Correcto uso de la app admin de django – python django
Pregunta: Cual es el correcto uso que se le debe dar a la página de administración (django.contrib.admin) en una aplicación en producción. explico mi pregunta. El ...
Cambiar un valor string a un entero – python django ajax
Pregunta: Con el siguiente código quiero hacer una validación donde valide si un dato que voy a ingresar es mayor a otro que ya tengo, ...
Como correr Django en python 3.5 – python python-3.x django
Pregunta: estoy trabajando con Django en python 2.7, para eso hago uso de virtualenv, pip, el conector de mysql, etc. Tengo predefinido python 3.5 en ...
Insertar salto de línea escribiendo en un txt (Python) – python tkinter
Pregunta: Como puedo insertar un salto de línea : archi.write(svnombreRP.get()) Lo hago de la siguientes maneras y no me funciona: No funciona archi.write(svnombreRP.get()'/n') No funciona archi.write(svnombreRP.get()/n) No funciona, me imprime la variable ...

Add a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *