Ich arbeite in meiner Freizeit an dem Projekt https://github.com/jedie/django-for-runners
Das ist eine Django-App um seine Laufdaten (Jogging) zu verwalten. Also interessant für Leute, die beim Laufen ihre Strecke per GPS / Laufuhr aufzeichnen.
Ich frage mich nun allerdings, wie ich die "Anwendung" am einfachsten für "Otto-Normal-Benutzer" anbieten kann.
Ziel soll dabei nicht das Internet sein, sondern mehr die "Lokale Benutzung". Wenn jemand seine Läuft im Netz veröffentlichen will, kann ja sowas die Strava oder Runtastic nutzten.
z.Z. starte ich immer den Django-Entwicklungsserver und gut. Aber das ist für Normale Benutzer IMHO zu kompliziert.
Außerdem will ich das auch selber im lokalen Netz auf meinem Server betreiben.
Um das wirklich für alle Benutzbar zu machen, müßte man wahrscheinlich die Web-App in einer "lokalen App" verpacken und einen Installer für Windows bauen usw. Aber weil ich Windows so gut wie nicht mehr nutzte, hab ich da weniger Lust zu.
Das einfachste wäre, den Django-Entwicklungsserver einfach weiter zu verwenden und fertig. Beim installieren könnte das ja ein entrypoint in der setup.py sein, sodass man das einfacher starten kann.
Aber ein "richtiger" Server wäre natürlich besser.
Vielleicht wäre es am Einfachsten sich auf eine Raspberry Pi Lösung zu fokussieren?!?
Da gibt es z.B. "HypriotOS" https://blog.hypriot.com/ - Ein minimal Debian optimiert um Docker auf dem Raspberry Pi zu betreiben.
Heißt dann, ich schaue das ich ein docker image bzw. ein docker compose setup aufsetzte und gut.
Hat jemand ein ähnliches Problem? Gibt es Meinungen/Ideen dazu?!?
Lokale WebApp für Endanwender benutzbar machen?
- noisefloor
- User
- Beiträge: 3882
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
die Hürde ich für Windows-Nutzer IMHO eher, Python zu installieren. Ich weiß nicht, wie es aktuell ist, aber früher musst man Python nach der Installation manuell dem Suchpfad hinzufügen. Was eine nicht unbeachtliche Hürde für "normale" Win-Nutzer sein kann.
Das Prog als ZIP Datei auszuliefern, ein einen beliebigen Ort zu entpacken und dann noch ggf. eine .bat-Datei dazu zu legen, die `python3 manage.py runserver` ausführt, ist IMHO keine Hürde.
Unabhängig ist später IMHO ein Update, weil du ja die Daten des Nutzer migrieren musst. Inkl. mögliche Updates an den Modellen in der models.py und der DB-Struktur. Das ist IMHO nicht einfach zu lösen.
Ich nutze ja auch ein paar selbstgeschriebene Django-Sachen, um meine Daten für meine Hobbys zu verwalten - aber Django ist IMHO keine gute Plattform, um es als lokal installierbare App "für die Masse" auszurollen, sorry to say so.
Gruß, noisefloor
die Hürde ich für Windows-Nutzer IMHO eher, Python zu installieren. Ich weiß nicht, wie es aktuell ist, aber früher musst man Python nach der Installation manuell dem Suchpfad hinzufügen. Was eine nicht unbeachtliche Hürde für "normale" Win-Nutzer sein kann.
Das Prog als ZIP Datei auszuliefern, ein einen beliebigen Ort zu entpacken und dann noch ggf. eine .bat-Datei dazu zu legen, die `python3 manage.py runserver` ausführt, ist IMHO keine Hürde.
Unabhängig ist später IMHO ein Update, weil du ja die Daten des Nutzer migrieren musst. Inkl. mögliche Updates an den Modellen in der models.py und der DB-Struktur. Das ist IMHO nicht einfach zu lösen.
Ich nutze ja auch ein paar selbstgeschriebene Django-Sachen, um meine Daten für meine Hobbys zu verwalten - aber Django ist IMHO keine gute Plattform, um es als lokal installierbare App "für die Masse" auszurollen, sorry to say so.
Gruß, noisefloor
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Electron: Hm ich weiß nicht. Mir scheint der Aufwand beim einarbeiten dann doch recht hoch.
Also Datenmigration sehe ich weniger als Problem. Das macht das Django ORM doch super.
ZIP Datei und Batch/Shell-Script ist eine Idee: Aber dann hat man Probleme mit Abhängigkeiten. Das hatte ich vor zig Jahren mit PyLucid gemacht und nannte sich "PyLucid-Standalone": Man kopiert einfach alle Abhängigkeiten zusammen. Ein bisschen wie ein portables virtualenv nur ohne Interpreter. Aber ist halt auch nur die halbe Miete. Wenn der Python Interpreter da ist, kann man auch direkt ein normales virtualenv machen. Per Bratch/Shell-Skript. Das mache ich bei PyHardLinkBackup: https://github.com/jedie/PyHardLinkBackup#installation
So könnte ich das auch bei Django-ForRunners machen... Aber die eigentliche Frage ist: Django-Dev.-Server weiter verwenden? Ist natürlich das einfachste.
Also Datenmigration sehe ich weniger als Problem. Das macht das Django ORM doch super.
ZIP Datei und Batch/Shell-Script ist eine Idee: Aber dann hat man Probleme mit Abhängigkeiten. Das hatte ich vor zig Jahren mit PyLucid gemacht und nannte sich "PyLucid-Standalone": Man kopiert einfach alle Abhängigkeiten zusammen. Ein bisschen wie ein portables virtualenv nur ohne Interpreter. Aber ist halt auch nur die halbe Miete. Wenn der Python Interpreter da ist, kann man auch direkt ein normales virtualenv machen. Per Bratch/Shell-Skript. Das mache ich bei PyHardLinkBackup: https://github.com/jedie/PyHardLinkBackup#installation
So könnte ich das auch bei Django-ForRunners machen... Aber die eigentliche Frage ist: Django-Dev.-Server weiter verwenden? Ist natürlich das einfachste.
Wie hoch der Aufwand fuer Electron ist kann ich nicht sagen, probiert hab ich es noch nicht. Aber das ist die "Traumloesung", weil halt alles in einem Paket ist.
Den Dev-Server nicht zu verwenden waere voellig ueberkandidelt. Der tut doch was er soll. Das man in Produktionsszenarien nginx oder Apache verwendet hat ja was mit der Durchsatzoptimierung zu tun. Fuer tausende konkurrierende Zugriffe. Das Problem hast du lokal doch nicht.
Den Dev-Server nicht zu verwenden waere voellig ueberkandidelt. Der tut doch was er soll. Das man in Produktionsszenarien nginx oder Apache verwendet hat ja was mit der Durchsatzoptimierung zu tun. Fuer tausende konkurrierende Zugriffe. Das Problem hast du lokal doch nicht.
- noisefloor
- User
- Beiträge: 3882
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Gruß, noisefloor
Ja, aber: dann musst du IMHO für jedes Update auch ein Update-Skript / Batchdatei mit liefern, die die Migration durchführt. Sonst wird's IMHO für "normale" Nutzer schwierig.Also Datenmigration sehe ich weniger als Problem. Das macht das Django ORM doch super.
Gruß, noisefloor
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Nein das sehe ich nicht als Problem. Schon jetzt wird beim starten mit run_test_project_dev_server.sh die Migrationen erledigt. z.Z. werden dabei auch bei Model änderungen neue migrationen angelegt. Das soll später natürlich nur beim entwickeln passieren...noisefloor hat geschrieben: ↑Sonntag 2. September 2018, 18:19 Ja, aber: dann musst du IMHO für jedes Update auch ein Update-Skript / Batchdatei mit liefern, die die Migration durchführt. Sonst wird's IMHO für "normale" Nutzer schwierig.
Ich hab einfach ein eigenes django manage command gemacht: Vor dem eigentlichen Server start wird "makemigrations", "migrate" und "collectstatic" gemacht. Wenn kein User exisiert, dann noch "createsuperuser" ...
Dazu hab ich einfach von staticfiles.management.commands.runserver geerbt und das dann erweitert, hier: https://github.com/jedie/django-for-run ... _server.py
Wenn es in diese Richtung gehen soll: Wäre es da nicht einfacher, vollständige Images für z.B. VirtualBox (ggf. in Verbindung mit Vagrant, wenn mehr flexibilität gebraucht wird) o.Ä. anzubieten, die man bloß starten muss (Virtualbox, weil es das auch für WIndows gibt?)? Das scheint mir etwas weniger Aufwand, als Raspberry Pi + Docker.jens hat geschrieben: ↑Sonntag 2. September 2018, 14:13 Aber ein "richtiger" Server wäre natürlich besser.
Vielleicht wäre es am Einfachsten sich auf eine Raspberry Pi Lösung zu fokussieren?!?
Da gibt es z.B. "HypriotOS" https://blog.hypriot.com/ - Ein minimal Debian optimiert um Docker auf dem Raspberry Pi zu betreiben.
Heißt dann, ich schaue das ich ein docker image bzw. ein docker compose setup aufsetzte und gut.
Hast du schon mal über Docker nachgedacht? Du kannst das ja in einem Container abbilden. Das Update würde mit einem pull des Image auch nutzerfreundlicher sein, da du den Start ja als CMD definieren kannst.
Ich würde nicht behaupten wollen das Docker aufwendiger ist in der Installation, da durch Docker tools (ja ich weiß Docker läuft dann quasi in einer VM) die Nutzung auf Windows auch besser geworden ist.
Ich würde nicht behaupten wollen das Docker aufwendiger ist in der Installation, da durch Docker tools (ja ich weiß Docker läuft dann quasi in einer VM) die Nutzung auf Windows auch besser geworden ist.
- noisefloor
- User
- Beiträge: 3882
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
@Tholo: Die Frage ist halt, wo man als Entwickler den DAU-Level seiner Zielgruppe des Programms ansetzt. IMHO ist Docker als Voraussetzung eine zu hohe Hürde, im Sinne von Abschreckend. Klar ist Docker im Server- und Entwicklerbereich einer der Standards, aber im Endanwenderbereich ist das IMHO noch lange nicht "angekommen".
Gruß, noisefloor
@Tholo: Die Frage ist halt, wo man als Entwickler den DAU-Level seiner Zielgruppe des Programms ansetzt. IMHO ist Docker als Voraussetzung eine zu hohe Hürde, im Sinne von Abschreckend. Klar ist Docker im Server- und Entwicklerbereich einer der Standards, aber im Endanwenderbereich ist das IMHO noch lange nicht "angekommen".
Gruß, noisefloor
Echt? Ich habe für eines meiner Anwendungen darüber nachgedacht, mittels Docker zu verteilen.
https://docs.docker.com/docker-for-wind ... containers
Diese Doku kam mir als einfache Hürde vor. Da nichts weiter installiert werden muss. Ich hab es allerdings noch nicht getestet. War eine Annahme von mir und das überrascht mich jetzt schon ein bisschen.
Und ein docker-compose up sollte der Anwender doch schreiben können oder?
Ich glaub ich muss es mir erst auf win anschauen...
https://docs.docker.com/docker-for-wind ... containers
Diese Doku kam mir als einfache Hürde vor. Da nichts weiter installiert werden muss. Ich hab es allerdings noch nicht getestet. War eine Annahme von mir und das überrascht mich jetzt schon ein bisschen.
Und ein docker-compose up sollte der Anwender doch schreiben können oder?
Ich glaub ich muss es mir erst auf win anschauen...
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Mit einem "docker-compose up" ist es ja nicht getan. Beruflich hab ich mit basierend auf python cmd eine bequeme art gebaut, die docker compose Projekte bequem zu betreiben... Alles per Hand ist mit zu doof und die alte Makefile Lösung, die ich abgelöst habe, war mir zu umständlich...
Aber ja, Docker wäre ein Thema und richtig: Das DAU-Level wäre dafür eigentlich zu hoch... Aber genau dafür wäre dann "HypriotOS" https://blog.hypriot.com/ gedacht: Ein SD-Karten Image bereitstellen für jemand der einen Rasberry rumfliegen hat. Wobei das DAU-Level dann immernoch hoch ist.
Der Vorteil wäre allerdings, das zum einen Entwickler eh mit docker umgehen können und man so zwei Zielgruppen gleichzeitig bedient...
Gestern hatte ich allerdings noch die Installation vereinfacht, durch ein Shell-Skript: https://github.com/jedie/django-for-runners#try-out
Damit läuft es auf folgendes hinaus:
Dann stelle ich mir die Frage: Haben DAUs überhaupt noch einen PC ?!? Ich glaube das wird immer weniger, oder?
Aber ja, Docker wäre ein Thema und richtig: Das DAU-Level wäre dafür eigentlich zu hoch... Aber genau dafür wäre dann "HypriotOS" https://blog.hypriot.com/ gedacht: Ein SD-Karten Image bereitstellen für jemand der einen Rasberry rumfliegen hat. Wobei das DAU-Level dann immernoch hoch ist.
Der Vorteil wäre allerdings, das zum einen Entwickler eh mit docker umgehen können und man so zwei Zielgruppen gleichzeitig bedient...
Gestern hatte ich allerdings noch die Installation vereinfacht, durch ein Shell-Skript: https://github.com/jedie/django-for-runners#try-out
Damit läuft es auf folgendes hinaus:
- Download von: https://raw.githubusercontent.com/jedie ... runners.sh
- Ausführen von boot_django_for_runners.sh (erstellt ~/Django-ForRunners virtualenv)
- Doppelklick/starten von ~/Django-ForRunners/bin/for_runners im Terminal
Dann stelle ich mir die Frage: Haben DAUs überhaupt noch einen PC ?!? Ich glaube das wird immer weniger, oder?
- noisefloor
- User
- Beiträge: 3882
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
also wenn ich mich in meinem Verwandten / Bekannten / Arbeitskollegen Kreis umsehe, dann gibt es IMHO nur zwei Wege, um DAU-kompatibel Software zu verteilen:
* ausführbares Binary
* ZIP-Datei einpacken und darin ein Skript ausführen
Wenn man nur Linux-Nutzer als Zielgruppe hätte, dann wäre ein passendes Paket noch ein Option.
Alles andere ist zu aufwendig / kompliziert / abschreckend.
Im gegebenen Fall wäre sicherlich auch ein Portal im Internet gut - aber dann muss man sich halt mir der vollen Ladung DSGVO rum schlagen, was auch nicht soo spaßig für ein Freizeitprojekt ist.
Gruß, noisefloor
also wenn ich mich in meinem Verwandten / Bekannten / Arbeitskollegen Kreis umsehe, dann gibt es IMHO nur zwei Wege, um DAU-kompatibel Software zu verteilen:
* ausführbares Binary
* ZIP-Datei einpacken und darin ein Skript ausführen
Wenn man nur Linux-Nutzer als Zielgruppe hätte, dann wäre ein passendes Paket noch ein Option.
Alles andere ist zu aufwendig / kompliziert / abschreckend.
Im gegebenen Fall wäre sicherlich auch ein Portal im Internet gut - aber dann muss man sich halt mir der vollen Ladung DSGVO rum schlagen, was auch nicht soo spaßig für ein Freizeitprojekt ist.
Gruß, noisefloor
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Gerade über mastodon gesehen:
https://github.com/mherrmann/fbs
Jemand schon einmal ausprobiert?!?
Ist allerdings nur für OpenSource Projekte kostenlos. Wobei: Ist Qt auch nur, oder?
https://build-system.fman.io/Electron alternative based on Python and Qt
fbs lets you create GUI apps for Windows, Mac and Linux.
It is a lightweight alternative to Electron based on Qt and Python.
...
Instead of reinventing the wheel, fbs builds on well-tested solutions: PyQt to use Qt from Python, PyInstaller for packaging, NSIS for Windows installers, .deb files on Ubuntu.
https://github.com/mherrmann/fbs
Jemand schon einmal ausprobiert?!?
Ist allerdings nur für OpenSource Projekte kostenlos. Wobei: Ist Qt auch nur, oder?
- noisefloor
- User
- Beiträge: 3882
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
richtig, Qt steht nur für OSS-Projekte unter einer freien Lizenz. Ist gerade auch Thema in diesem thread, da stehen auch Lizenzgebühren drin.
Gruß, noisefloor
richtig, Qt steht nur für OSS-Projekte unter einer freien Lizenz. Ist gerade auch Thema in diesem thread, da stehen auch Lizenzgebühren drin.
Gruß, noisefloor