App mit Python erstellen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Gibt's einen einfachen Weg um mittels Python eine App zu erstellen?
BlackJack

@meego: Definiere ”App”.
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

iPhone / Android (gut wäre auch gleichzeitig eine Website).
BlackJack

@meego: Das sind ja im Grunde drei verschiedene Sachen. Ich denke nicht dass es da *einen* Weg für gibt. Für Smartphones würde ich entweder den für die Plattform vorgesehenen Weg gehen (ObjectiveC für iPhone, und Java für Adroid) oder eine HTML5+CSS+JavaScript (Web)app schreiben die auf beiden Plattformen läuft.
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Möchte als Unerfahrener eher bei Python bleiben. Ich dachte, ich hätte irgendwo mal ein Python Framework gesehen. Kivy?
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Gerade weil du unerfahren bist ist es empfehlenswert den platformüblichen und populärsten Weg zu gehen. Eine weitere Sprache zu lernen, insbesondere wenn sich das Paradigma nicht ändert, sollte hier ohnehin keine nennenswerte Barriere sein, du musst dich schliesslich ohnehin schom mit neuen großen komplexen Frameworks beschäftigen.
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Naja, HTML5 und JavaScript wären dann gleich 2 neue Sprachen.
Taugt Python denn nur für Prototypenbau? Ich meinte Google setzt z.B. viel Python ein.
Zuletzt geändert von meego am Donnerstag 2. Juli 2015, 22:47, insgesamt 1-mal geändert.
Benutzeravatar
snafu
User
Beiträge: 6908
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Mobile Apps für verschiedene Plattformen sind übrigens auch mit Qt möglich:

http://www.qt.io/mobile-app-development/

EDIT: In diesem Zusammenhang ist möglicherweise auch pyqtdeploy interessant. Anscheinend kann man damit seine Qt-Programme in Python schreiben (unter Verwendung von PyQt) und es wird dann nativer C++-Code erzeugt. Dieser Code ist eine Umwandlung des PyQt-Codes in C++-Qt, wenn ich es richtig verstanden habe. Zusätzlich werden die benötigten Module aus der Python-Standardbibliothek mit einkompiliert. Man muss also kein Python auf dem Gerät installiert haben, wo die App später laufen soll. Laut Doku ist damit auch die Entwicklung für mobile Geräte möglich. Ausprobiert habe ich es noch nicht, aber es klingt vielversprechend.
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Die wollen Geld. Ist Qt Open Source oder nicht? (Andererseits steht auch etwas von LGPL.)
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Apps die nicht mehr machen, als eine Webseite, halte ich eh für absolut überflüssig.

Die Qt Lösung hört sich abgefahren an.
Eigentlich sollte so was ähnliches wie bei pypyjs möglich sein. Allerdings ist es verboten eigenen eigenen interpreter mit ein zupacken,oder?

Vermutlich neigen solche Lösungen mehr zu grossen schwerfälligen apps, oder?


Anscheinend wäre kivy eine gute Wahl: http://kivy.org/docs/gettingstarted/packaging.html
Aber native apps werden das nicht,oder?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Kivy sieht von dem was die auf der Website haben ziemlich nach "Processing" aus.

Ist Qt eher etwas für traditionelle Software-GUIs?
Benutzeravatar
pixewakb
User
Beiträge: 1413
Registriert: Sonntag 24. April 2011, 19:43

HTML5+CSS+JavaScript - klingt interessant.

Qt - klingt interessant - kenne ich nicht: Wofür verlangen die Geld!?

Kivy - habe ich schon mal gesehen und ist nicht konkurrenzfähig. Die Apps, die ich sah, waren gut 20 MB groß; eine native App kommt gut und gerne mit 1 bis 2 MB aus.
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

PyQT ist GPL, wenn du mit GPL nicht leben kannst (z.B. kommerzielle Nutzung, ohne offenem Code), dann kannst du eine Lizenz kaufen.
PyQTDeploy is aber anscheinend ist unter der BSD Linzenz veröffentlicht.
the more they change the more they stay the same
Daikoku
User
Beiträge: 66
Registriert: Montag 20. April 2015, 21:14

Ich habe das dringende Bedürfnis mich unbeliebt zu machen.

Ich bin ein sogenannter PowerUser in einem etwas größeren Unternehmen und habe keine Ahnung vom Programmieren oder der Systemadministration.
Ich bin jahrelang mit schwerfälligen JAVA basierten GUI Applikationen gequält worden.
Seit ca. 2 Jahren, haben wir jetzt endlich benutzbare graphische Benutzerschnittstellen, sogenannte Apps, über alle
Plattformen hinweg und es macht richtig Spass, mit all unseren Applikationen zu arbeiten.
Der Weg hierhin war mehr als steinig.

Aus diesem Grund, möchte ich auf folgendes Hinweisen :
Wenn ich mir die Empfehlungen der 4 größten Softwarehersteller der Welt mit Mrd. von Usern einmal anschaue,
so empfehlenden diese alle exakt den gleichen Weg zur App Erstellung, wie bereits von BlackJack aufgezeigt.

Entweder eine native Entwicklung, für jede einzelne Plattform, eine HTML5, CSS und JavaScript oder eine hybride (native + HTML5, CSS und JavaScript) basierte.
Wenn hier von JavaScript die Rede ist, gehe ich immer von ECMAScript 6 aus.
Die Wahl der passenden Technologie hängt sehr stark von den Anforderungen des Projekts und nicht zuletzt von den Fähigkeiten und Neigungen des Entwicklers ab,
welche hier nicht bekannt sind.

Die App-Performance und die UI-Reaktionszeiten sind die primären Aspekte, wenn es darum geht, welcher Ansatz der bessere ist.
Dabei sollte von vornherein klar sein, das eine hybride Lösung nie die Performance einer native Entwicklung erreichen kann.
Das ist auch nicht immer erforderlich, dennoch sollte mit einem Proof of Concept begonnen werden, wenn eine HTML5, CSS und JavaScript gestützte Technologie in Betracht gezogen wird.

Eine native App-Entwicklung mit einer zentraler C#-Code-Basis für iOS, Android und Windows Phone ist zum Beispiel mit Xamarin (http://xamarin.com) möglich.
Nein es ist nicht kostenlos, aber die Xamarin Starter Edition ist es und diese ist zuerst einmal völlig ausreichend für kleinere Projekte.
Wenn einem diese Art der Softwareentwicklung, mit einer zentralen Code Basis zusagt, kann man immer noch, nach einer kostenlosen Version aus einer anderen Quelle ausschau halten.
Von der Webseite des Herstellers : "Xamarin Starter Edition is our free tier, which allows anyone to get a taste of mobile development in C# by writing small apps that can be deployed to devices."

Siehe bitte auch : UTType.PythonScript Property
http://developer.xamarin.com/api/proper ... thonScript
http://developer.xamarin.com/api/proper ... thonScript


Die hier vorgeschlagenen Softwarepakete wie Kivy und QT, welche sicherlich alle eine Daseinsberechtigung haben, sind nicht State of the Art für eine App Entwickklung.


Noch ein wichtiger Punkt. Bedingt durch die permanente SmartPhone-Weiterentwicklung, unterliegt die moderne App Entwicklung immer kürzeren lifecycles.
Es ist sicherlich kein Fehler möglichst nahe bei den Empfehlungen der einzelnen Hersteller zu bleiben.


Die Frage war
Gibt's einen einfachen Weg um mittels Python eine App zu erstellen?
Das liegt im Auge des Betrachters.

Mit einer native Entwickklung, auch mit einen Tool wie Xamarin, für jede einzelne Plattform zu beginnen, halte ich für sehr ambitioniert und aus diesem Grund,
empfehle ich, einen Einstieg mit HTML5, CSS und JavaScript den Vorzug zu geben.
Wenn man sich mit der Zeit ein wenig mit JavaScript angefreundet hat, kann durch entsprechende Tools die Features einer App erweitert werden.
Ich persönlich kenne nur jQuery und AngularJS2. Bin mir aber ganz sicher, das es für jedes Anforderungsprofil auch die passenden Frameworks gibt.

Nachdem ich mein Wissen Schritt für Schritt erweitert habe, besteht die Möglichkeit native Technologien über eine JavaScript-Native-Bridge zu nutzen.
Das geht dann über die WebView-Komponente. Diese ist vereinfacht dargestellt eine rahmenlose Browser-Ansicht ohne Bedienelemente,
die eine HTML-Layout-Engine zur Darstellung einer HTML/CSS/JavaScript-Benutzeroberfläche nutzt.
Eine derartige Bridge kann zwischen der WebView-Ebene und der nativen Plattform kommunizieren, so dass über entsprechende APIs
die verschiedenen Geräte-Features, wie zum Beispiel die Kamera durch JavaScript genutzt werden kann.

Wenn ich mit einer HTML5, CSS und JavaScript basierten Lösung beginnen würde, halte ich mir immer alle Türen offen.

Ich kenne zwei Frameworks, welche es lohnen einmal etwas genauer angeschaut zu werden.
- PhoneGap http://phonegap.com/
- Cordova https://cordova.apache.org/

Wie ich der Dokumentation entnehmen konnte sind beide Frameworks mehr oder weniger gleich.
Einige Konventionen und CLI-Commands variieren und so ist es lediglich Geschmackssache, welches Framework man bevorzugt.
Da die Frameworks von unterschiedlichen Entwicklern, Apache und Adobe, weiterentwickelt werden, dürften sie auch zukünftig nebeneinander bestehen bleiben.

Jetz kommen wir einmal zu Python. Python wird nicht nur von Google sondern auch zum Beispiel von Facebook, Microsoft, Intel, SAP und vielen anderen eingesetzt.
Python ist hinter JavaScript und PHP die am meisten genutzte ScriptSprache. http://redmonk.com/sogrady/2015/07/01/l ... kings-6-15

Die Frage, ob Python sich nur zum Prototyping eignet, ist an dieser Stelle völlig irrelevant und wird nicht weiter betrachtet.


Um eine App zu entwicklen würde ich folgenden Weg in betracht ziehen :

- RESTful web Services, könnte man zum Beispiel mit Flask umsetzen.
. Eine recht gute Einführung hierzu gibt es von Miguel Grinberg: Writing RESTful web services with Flask - PyCon 2014 https://www.youtube.com/watch?v=px_vg9Far1Y
- Etwas Anspruchsvoller, wäre Bottle und Twisted als Webserver auf PyPy. Die Performance ist wirklich der Hammer.
- Twisted wurde von Facebook entwickelt und kann sehr viel mehr, als nur einen Webserver bereitstellen.
. Man könnte somit auch auf Bottle verzichten. Aber das wäre wirklich etwas für Entwickler die sich sehr, sehr gut mit Python auskennen.

- und bei HTML5, CSS und JavaScript als UI würde ich mich an das Model, View und Controller Prinzip orientieren.

Aber wie schon gesagt, ich bin nur ein User und kein Softwareentwickler.
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Ich denke ich fange lieber mit einer Website an. Benötigt man Bottle, Web2py oder Flask nicht ohnehin um die DB abzufragen und zu bearbeiten? Oder warum würde man dazu lieber JavaScript verwenden?
Daikoku
User
Beiträge: 66
Registriert: Montag 20. April 2015, 21:14

Lieber meego,

Du irrst Ziel und kopflos durch tiefste Finsternis . Das wird so nichts.

Step 1. Schaue Video Miguel Grinberg: Flask by Example - PyCon 2014 - https://www.youtube.com/watch?v=FGrIyBDQLPg
und/oder
arbeite einmal das Miguel Grinberg Tutorial http://blog.miguelgrinberg.com/post/the ... ello-world durch.

Step 2. Komme dann wieder hierhin zurück.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

pixewakb hat geschrieben:Kivy - habe ich schon mal gesehen und ist nicht konkurrenzfähig. Die Apps, die ich sah, waren gut 20 MB groß; eine native App kommt gut und gerne mit 1 bis 2 MB aus.
Ich würde die App Größe nicht zwangsweise als K.O. Kriterium sehen. Also ich persönlich schon, aber Otto-Normal-Anwender nicht. Die könne mit den Zahlen sowieso nichts anfangen :P

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Ab einer bestimmten größe kann man ein App zumindest unter iOS nur über WIFI herunterladen. Spätestens dann interessiert es einen Otto-Normal-Anwender ganz bestimmt. Gerade wenn man noch Grafiken oder ähnliches einbinden möchte, will man nicht soviel Speicher verschwenden.
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Ehrlich gesagt wäre mir Bottle mit der einen Datei sympathischer (das mit der virtuellen Umgebung ist schon einmal nicht sehr anwenderfreundlich.)
Gibt's zu Bottle ein vernünftiges Tutorial? Und wozu brauche ich dann noch JavaScript?
Sirius3
User
Beiträge: 18335
Registriert: Sonntag 21. Oktober 2012, 17:20

@meego: Du solltest Dich zu erst einmal mit der Theorie von Client-Server-Anwendungen vertraut machen. Dann mit den Spezialitäten von Web-Server und Web-Broweser. Und dann kannst Du Dir einige Fragen selbst beantworten.
Antworten