Więc to jest nowe tysiąclecie; Apple machnął ręką; teraz legalne jest włączenie interpretera języka Python do aplikacji na iPhone'a (App Store).
Jak się to robi? Cała istniejąca dyskusja (nic dziwnego) odnosi się do jailbreakingu. (Starsze pytanie: czy mogę pisać natywne aplikacje na iPhone'a w Pythonie )
Moim celem nie jest tutaj napisanie aplikacji PyObjC, ale napisanie zwykłej aplikacji ObjC, która uruchamia Python jako wbudowaną bibliotekę. Kod Pythona wróci następnie do natywnego kodu Cocoa. Jest to wzorzec „logika sterująca to kod w Pythonie”.
Czy istnieje przewodnik po tym, jak zbudować Python w XCode, aby moja aplikacja na iPhone'a mogła go połączyć? Najlepiej okrojony Python, ponieważ nie będę potrzebował 90% standardowej biblioteki.
Prawdopodobnie potrafię zrozumieć wątki i API rozszerzenia Pythona; Zrobiłem to na MacOS. Ale tylko przy użyciu kompilatorów wiersza polecenia, a nie XCode.
Odpowiedzi:
Tak naprawdę nie ma znaczenia, w jaki sposób tworzysz Pythona - nie musisz na przykład budować go w Xcode - ale liczy się produkt tej kompilacji.
Mianowicie, będziesz musiał zbudować coś takiego jak libPython.a, które można statycznie połączyć z twoją aplikacją. Po utworzeniu pliku .a można go dodać do projektu Xcode dla aplikacji, a stamtąd będzie on połączony i podpisany, tak jak reszta aplikacji.
IIRC (minęło trochę czasu, odkąd ręcznie zbudowałem Pythona), gotowy python zbuduje bibliotekę libPython.a (i kilka innych bibliotek), jeśli skonfigurujesz go poprawnie.
Oczywiście, drugim problemem będzie kompilacja krzyżowa Pythona dla ARM z twojego zestawu 86 . Python jest projektem opartym na autoconf, a autoconf to problem dla kompilacji krzyżowej.
Jak poprawnie stwierdzisz, zmniejszenie jej rozmiaru będzie miało krytyczne znaczenie.
Nie jest też zaskakujące, że nie jesteś pierwszą osobą, która chce to zrobić, ale nie na iOS. Python został wciśnięty na urządzenia o wiele mniej wydajne niż te z systemem iOS. Podczas wyszukiwania w Google znalazłem wątek z wieloma linkami; to może być użyteczne .
Możesz również dołączyć do listy pyobjc-dev . Chociaż nie celujesz w aplikację opartą na PyObjC (co przy okazji jest dobrym pomysłem - PyObjC ma długą drogę, zanim będzie przyjazny dla iOS), społeczność PyObjC dyskutowała o tym i Ronald, o kimkolwiek, jest prawdopodobnie najbardziej kompetentną osobą w tej dziedzinie. Zauważ, że PyObjC będzie musiało rozwiązać problem z osadzonym Pythonem na iOS przed przeniesieniem PyObjC. Ich warunkiem wstępnym jest jakby twoje wymaganie.
źródło
Umieściłem bardzo zgrubny skrypt na githubie, który pobiera i buduje python2.6.5 dla iPhone'a i symulatora.
http://github.com/cobbal/python-for-iphone
Praca w toku
Nieco przygnębiająca aktualizacja prawie 2 lata później: (skopiowana z README na github)
źródło
pyobjc
jest trudny do skompilowania, czy można go użyćctypes
? W takim przypadku ta odpowiedź może być wskazówką (uświadomienie sobie, że byłby to początek dużej i bolesnej pracy, ale jednak).Ja też zacząłem taki projekt. Jest dostarczany z własnym uproszczonym skryptem kompilującym, więc nie ma potrzeby mieszania się z autoconf, aby uzyskać skompilowaną krzyżowo bibliotekę statyczną. Jest w stanie zbudować całkowicie wolną od zależności bibliotekę statyczną Pythona z kilkoma popularnymi modułami. Powinien być łatwo rozszerzalny.
https://github.com/albertz/python-embedded/
źródło