Es ist also ein neues Jahrtausend; Apple hat mit der Hand gewinkt; Es ist jetzt legal, einen Python-Interpreter in eine iPhone-App (App Store) aufzunehmen.
Wie macht man das? Alle bestehenden Diskussionen (nicht überraschend) beziehen sich auf Jailbreaking. (Ältere Frage: Kann ich native Python-Apps mit Python schreiben? )
Mein Ziel hier ist nicht, eine PyObjC-App zu schreiben, sondern eine reguläre ObjC-App, die Python als eingebettete Bibliothek ausführt. Der Python-Code ruft dann den nativen Cocoa-Code auf. Es ist das Muster "Steuerlogik ist Python-Code".
Gibt es eine Anleitung zum Erstellen von Python in XCode, damit meine iPhone-App es verknüpfen kann? Am liebsten ein abgespeckter Python, da ich nicht 90% der Standardbibliothek benötige.
Ich kann wahrscheinlich die Threading- und Python-Erweiterungs-API herausfinden; Ich habe das unter MacOS gemacht. Aber nur mit Befehlszeilen-Compilern, nicht mit XCode.
Antworten:
Es spielt keine Rolle, wie Sie Python erstellen - Sie müssen es beispielsweise nicht in Xcode erstellen -, aber was wichtig ist, ist das Produkt dieses Builds.
Sie müssen nämlich so etwas wie libPython.a erstellen, das statisch mit Ihrer Anwendung verknüpft werden kann. Sobald Sie eine .a haben, kann diese dem Xcode-Projekt für Ihre Anwendung (en) hinzugefügt werden und von dort aus wird sie wie der Rest Ihrer App verknüpft und signiert.
IIRC (es ist schon eine Weile her, seit ich Python von Hand erstellt habe) Die sofort einsatzbereite Python erstellt eine libPython.a (und eine Reihe anderer Bibliotheken), wenn Sie sie richtig konfigurieren.
Natürlich wird Ihr zweites Problem darin bestehen, Python für ARM aus Ihrer 86- Box zu kompilieren . Python ist ein auf Autoconf basierendes Projekt, und Autoconf ist ein Problem bei der Cross-Kompilierung.
Wie Sie richtig sagen, ist es wichtig, es klein zu machen.
Kein Wunder ist auch, dass Sie nicht die erste Person sind, die dies tun möchte, aber nicht für iOS. Python wurde in Geräte integriert, die viel weniger leistungsfähig sind als solche, auf denen iOS ausgeführt wird. Ich habe beim Googeln einen Thread mit einer Reihe von Links gefunden. es könnte nützlich sein .
Vielleicht möchten Sie auch der pyobjc-dev- Liste beitreten . Während Sie nicht auf eine PyObjC-basierte Anwendung abzielen (was übrigens eine gute Idee ist - PyObjC ist noch weit davon entfernt, iOS-freundlich zu werden), hat die PyObjC-Community dies und Ronald von allen diskutiert. ist wahrscheinlich die sachkundigste Person in diesem speziellen Bereich. Beachten Sie, dass PyObjC das Problem mit eingebettetem Python unter iOS lösen muss, bevor PyObjC portiert werden kann. Ihre Voraussetzung ist sozusagen Ihre Anforderung.
quelle
Ich habe ein sehr grobes Skript für Github erstellt, das Python2.6.5 für iPhone und Simulator abruft und erstellt.
http://github.com/cobbal/python-for-iphone
In Arbeit
Etwas deprimierendes Update fast 2 Jahre später: (kopiert von README auf Github)
quelle
pyobjc
es schwierig zu kompilieren ist, ist es möglich, es zu verwendenctypes
? In diesem Fall könnte diese Antwort ein Hinweis sein (zu erkennen, dass dies nur der Beginn einer großen und schmerzhaften Arbeit wäre, aber immer noch).Ich habe auch ein solches Projekt gestartet. Es wird mit einem eigenen vereinfachten Kompilierungsskript geliefert, sodass Sie nicht mit autoconf herumspielen müssen, um Ihre Cross-kompilierte statische Bibliothek zu erhalten. Es ist in der Lage, eine vollständig abhängigkeitsfreie statische Python-Bibliothek mit einigen gängigen Modulen zu erstellen. Es sollte leicht erweiterbar sein.
https://github.com/albertz/python-embedded/
quelle