Python Programme auch auf iOS Geräten?

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.
Antworten
René
User
Beiträge: 6
Registriert: Mittwoch 18. Mai 2011, 22:44

Hallo zusammen,

ich stehe mal wieder vor einer Frage, wozu ich gerade keine Informationen zu finde und zwar laufen Pythonprogramme, die unter einem Mac als .app normal laufen auch auf den IOS Geräten, oder muss man diese modifizieren? Können die iOS Geräte überhaupt mit Python umgehen oder ist dies nicht möglich und man müsste es in einer anderen Sprache umsetzen?


Beste Grüße
René
problembär

Wenn da der Interpreter läuft, laufen auch die (Konsolen-)Programme. Wenn nicht, dann nicht.
René
User
Beiträge: 6
Registriert: Mittwoch 18. Mai 2011, 22:44

Also eine offensichtliche Konsole soll es ja nicht geben, soviel habe ich wenigstens erfahren. Ich bezweifle aber mittlerweile das Pythonprogramme mit tkinter auch darauf laufen werden. Wäre wohl auch zu schön gewesen...
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Keine Ahnung von iOS, aber kreatives Nutzen einer nicht unbekannten Suchmaschine förderte dies zu Tage. Das klingt zumindest(!) nach einem proof of principle, oder?

HTH
Christian
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

René hat geschrieben:Ich bezweifle aber mittlerweile das Pythonprogramme mit tkinter auch darauf laufen werden. Wäre wohl auch zu schön gewesen...
TKinter auf einem Touchscreen ist sowieso auch keine so gute Idee… aber du kannst sicherlich UIKit über pyobjc nutzen. Ob du damit dann in den AppStore kommst ist eine andere Frage.
deets

Leider ist pyobjc wohl unter iOS nicht unterstuetzt - gerade gestern sagte Ronald noch was in die Richtung. Hat wohl technisch was mit der libffi zu tun fuer ARM - und bock auf den support hat er auch nicht (aber das waere sicher loesbar)

Ich find's schade, pyobjc ist wirklich genial, damit iOS Anwendungen bauen zu koennen waere toll.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Meines Wissen gibt es keinen praktikablen Weg, iOS-Anwendungen mit Python zu bauen. Der Macher von Galcon hat wohl mal einen auf seinem tinypy basierenden Übersetzer von Python nach C++ gebaut, was er dann unter iOS kompilieren konnte, aber das stelle ich mir extrem umständlich vor. Ich hatte mal spaßeshalber einen Python-Interpreter in Objective-C geschrieben, der unter iOS läuft, doch da er einzig "print" und "range" als Bibliotheksfunktionen kennt, kann man nicht wirklich viel damit anfangen :)

Theoretisch könnte man wohl auch CPython kompilieren, müsste aber wohl recht viel anpassen, da viele Funktionen der Standard-Bibliothek unpassend sind oder einfach nicht die zugrunde liegenden C-Bibliotheken existieren. Zudem gäbe es keine Kommandozeile, kein stdin oder stdout und das, was iOS interessant macht, nämlich die CocoaTouch-Klassenbibliothek, könnte man auch nicht ansprechen, weil es keine äquivalenten Python-Bindings hätte.

Pyobjc finde ich im Gegensatz zu deets auch nicht genial, da es Ausdrücke wie `[ary setObject:foo atIndex:1]|` zu `ary.setObject_atIndex_(foo, 1)` verunstaltet. Und ohne von Cocoa (und Foundation und was es sonst noch alles gibt) für Python zu abstrahieren, müsste man eh Objective-C lesen können und so weit verstehen, dass man der Dokumentation folgen kann und diese dann gedanklich in Python übersetzen kann.

Da kann man dann lieber gleich Objective-C benutzen, denn die Sprache ist das geringste der Probleme, die man IMHO bei der Entwicklung von Anwendungen für iOS hat. Das am iOS 5 der LLVM-Compiler automatisch retain, release und autorelease-Methoden ergänzt, sollte über die größten Anfängerprobleme hinweghelfen.

Ja, Objective-C und Apple Klassenbibliotheken sind deutlich geschwätziger als Python und man muss einiges an Redundanzen bei der Erstellung von Klassen ertragen, aber CocoTouch finde ich wirklich vom Design her gelungen.

Am nächsten an dem Wunsch, Python zu benutzen, ist wahrscheinlich Titanium Mobile, die eigentlich JavaScript nutzen, doch dank Skulpt können sie in ihrem JavaScript-Interpreter Python simulieren, mit dem man dann wiederum das JavaScript-basierte UI-Rahmenwerk von Titanium ansprechen kann, welches Zugriff auf native iOS-Controls bietet. Da Titanium Apps extra kompiliert werden müssen, ist die Entwicklung aber auch eher anstrengend denn bequem. Und einen Debugger gibt es AFAIK auch nur gegen Geld.

Schließlich noch ein letzter Punkt: Direkt auf dem Gerät Code nachladen würde Apples Richtlinien widersprechen. Wenn überhaupt, könnte man Python nur als interne Scriptsprache einsetzen und das macht IMHO nur Sinn, wenn man dadurch Entwicklungszeit spart. Das sehe ich zur Zeit leider nicht.

Stefan

PS: Ich entwickle beruflich iOS (und Android)-Anwendungen, vielleicht habe ich auch daher kein Problem mit Objective-C
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

sma hat geschrieben:Pyobjc finde ich im Gegensatz zu deets auch nicht genial, da es Ausdrücke wie `[ary setObject:foo atIndex:1]|` zu `ary.setObject_atIndex_(foo, 1)` verunstaltet. Und ohne von Cocoa (und Foundation und was es sonst noch alles gibt) für Python zu abstrahieren, müsste man eh Objective-C lesen können und so weit verstehen, dass man der Dokumentation folgen kann und diese dann gedanklich in Python übersetzen kann.
Immer noch besser als das was Apple mit seinem Ruby-Dialekt Macruby verunstaltet.

Der Hauptnachteil von pyobjc ist, dass es den Anschein hat. als würde Apple das nicht weiter verfolgen und es deswegen etwas eingeschlafen ist. Aber ich hatte gehofft, dass man es einfach für iOS kompilieren kann, ist wohl nicht möglich.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Darii hat geschrieben:Immer noch besser als das was Apple mit seinem Ruby-Dialekt Macruby verunstaltet.
Über Geschmack lässt sich offenbar streiten. Ein `ary.setObject(foo, atIndex:1)` finde ich weniger hässlich und näher an Objective-C (und Smalltallk) als die Variante, alle Schlüsselwörter mit `_` zu konkatenieren und ihnen so den Vorteil zu nehmen, die Parameter zu schreiben. Spielt aber auch keine so große Rolle, denn MacRuby lässt sich ebenfalls nicht für iOS-Entwicklung einsetzen.

Stefan
fermion
User
Beiträge: 20
Registriert: Sonntag 9. März 2014, 16:54

sma hat geschrieben:Meines Wissen gibt es keinen praktikablen Weg, iOS-Anwendungen mit Python zu bauen.
Die Forumssuche liefert ein einziges Thema mit dem Schlüsselwort "iOS" im Betreff: das ist wahrscheinlich schon Indiz genug für:
man kann es immer noch vergessen, eine ernsthafte iOS-App in Python zu schreiben?

Oder irre ich mich?

Falls es eine Rolle spielt: es geht um jailbroken iDevices.

Kurze Hintergrundinfo zu meiner Person: ich kann bisher noch gar nicht programmieren.
Pythons Syntax jedoch finde ich sehr schön. Und ich habe immer mal wieder kleinere Aufgaben, für die ich keine iOS-App oder keinen iOS-Tweak (Cydia) finden kann.
Da wäre es die perfekte Motivation, sich langsam dem Programmieren zu nähern.

Danke für Euren Rat :)
Python 3.3.4 | Windows 7 (64bit)
fermion
User
Beiträge: 20
Registriert: Sonntag 9. März 2014, 16:54

Hhmm.

Würde mich nach wie vor sehr freuen, wenn jemand die Frage kurz beantworten könnte :)
Python 3.3.4 | Windows 7 (64bit)
BlackJack

@fermion: Mangels iOS-Gerät kann ich nichts aus eigener Erfahrung dazu sagen, aber es sieht so aus als wenn man bei den Mobilplattformen doch eher auf die jeweils „nativen” Sprachen setzt oder auf HTML5 und JavaScript wenn es plattformübergreifend sein soll.
fermion
User
Beiträge: 20
Registriert: Sonntag 9. März 2014, 16:54

Vielleicht liest hier im Forum auch überhaupt kein einziger iOS-App-Programmierer mit, wer weiß.

Schade, dass man überhaupt für die diversen Plattformen in spezifischen Sprachen schreiben muss, da es offenbar technisch nicht möglich ist, die jeweils eine Sprache verlustfrei und absolut zuverlässig in eine andere zu übersetzen.

Hier wäre es Python -> Objective C (das ist wohl die Sprache für iOS-Apps).
Python 3.3.4 | Windows 7 (64bit)
BlackJack

@fermion: Das ist weniger eine Frage der technischen Möglichkeiten oder des Übersetzens einer Sprache in eine andere, sondern unterschiedliche Umgebungen und teilweise wohl auch Politik von Apple was die in den App-Store lassen und was nicht.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Ohne iOS Entwickler zu sein werfe ich mal http://kivy.org/ in den Raum. Ich hab keine Ahnung ob es was taugt, sieht aber ganz nett aus und erlaubtes Python Anwendungen zu schreiben die unter anderem auch auf iOS laufen.
fermion
User
Beiträge: 20
Registriert: Sonntag 9. März 2014, 16:54

@DasIch
Wenn ich die Funktion der iOS Kivy richtig verstehe, stellt sie eine Umgebung dar, die es erlaubt Pythonskripte auszuführen.

Das ist natürlich grundsätzlich schonmal praktisch, aber doch etwas Anderes, als das, woran ich im Ausgangsposting dachte.
Da ging es mir darum, ob man ganze Apps (*.ipa) in Python schreiben kann. Die dann direkt auf dem iOS (ohne Zusatzumgebung) lauffähig sind.

Auch unabhängig von Apples AppStore-Politik, wenn es um Geräte mit Jailbreak geht.
Ein Jailbreak erlaubt das Installieren von Apps ohne den Zwangsweg über den Appstore.
Python 3.3.4 | Windows 7 (64bit)
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Eine "Zusatzumgebung" brauchst du und hast du in jedem Fall, selbst wenn du eine Anwendung in Objective-C schreibst, hast du ja noch eine Runtime. Wenn du eine Python Anwendung schreibst ist diese halt etwas größer.
fermion
User
Beiträge: 20
Registriert: Sonntag 9. März 2014, 16:54

Mit "zusätzlich" meine ich "zusätzlich zu bereits im iOS integrierten Software".

Im jailbroken iOS kann man ohne zusätzliche Software *.ipa installieren.

"Apps bereitstellen" ist also synonym zu "*.ipa bereitstellen" gemeint.

Aber vielleicht verstehen wir uns noch miss.
Python 3.3.4 | Windows 7 (64bit)
Antworten