Встраивание Python в приложение для iPhone - PullRequest
91 голосов
/ 11 сентября 2010

Итак, это новое тысячелетие;Apple махнула рукой;теперь законно включать переводчика Python в приложение для iPhone (App Store).

Как это можно сделать?Все существующие обсуждения (неудивительно) относятся к джейлбрейку.(Старый вопрос: Могу ли я писать собственные приложения для iPhone с использованием Python )

Моя цель здесь не в том, чтобы написать приложение PyObjC, а в том, чтобы написать обычное приложение ObjC, которое запускает Python как встроенныйбиблиотека.Затем код Python перезвонит нативному коду какао.Это шаблон «логика управления - это код Python».

Есть ли руководство по созданию Python, встроенного в XCode, чтобы мое приложение для iPhone могло связать его?Желательно урезанный Python, так как мне не понадобится 90% стандартной библиотеки.

Вероятно, я смогу понять API потоков и расширения Python;Я сделал это на MacOS.Но только с использованием компиляторов командной строки, а не XCode.

Ответы [ 3 ]

28 голосов
/ 11 сентября 2010

Неважно, как вы собираете Python - вам не нужно, например, создавать его в XCode - но что важно, так это продукт этой сборки.

А именно, вам нужно будет создать что-то вроде libPython.a, которое может быть статически связано с вашим приложением. Когда у вас есть .a, его можно добавить в проект Xcode для вашего приложения, и оттуда он будет связан и подписан, как и все остальное приложение.

IIRC (прошло уже много времени с тех пор, как я создал Python вручную), готовый Python создаст libPython.a (и кучу других библиотек), если вы настроите его правильно.

Конечно, вашей второй проблемой будет кросс-компиляция Python для ARM из вашей коробки 86 . Python - это проект, основанный на autoconf, а autoconf - трудная задача для кросс-компиляции.

Как вы правильно заявите, сделать его маленьким будет критическим.

Также неудивительно, что вы не первый, кто хочет сделать это, но не для iOS. Python был втиснут в устройства, гораздо менее способные, чем те, которые работают под iOS. Я нашел ветку с кучей ссылок, когда гуглял; это может быть полезно .

Также вы можете присоединиться к списку pyobjc-dev . Пока вы не ориентируетесь на приложение на основе PyObjC (что, кстати, хорошая идея - PyObjC еще далеко до того, чтобы стать дружественным для iOS), сообщество PyObjC обсуждает это и Рональда, кого угодно, вероятно, самый знающий человек в этой конкретной области. Обратите внимание, что PyObjC должен будет решить проблему встроенного Python для iOS перед портированием PyObjC. Их обязательством является ваше требование.

21 голосов
/ 14 сентября 2010

Я поставил очень грубый скрипт на github, который выбирает и собирает python2.6.5 для iPhone и симулятора.

http://github.com/cobbal/python-for-iphone

Работа в процессе

Немного удручающее обновление почти 2 года спустя: (скопировано из README на github)

В этом проекте, к моему удовлетворению, никогда не запускался python на iPhone, и я не могу рекомендовать использовать его для любого серьезного проекта.на данном этапе.

Наиболее заметно отсутствует поддержка pyobjc (портирование на iPhone оказывается намного сложнее, поскольку он зависит от более специфичного для платформы кода)

Также отсутствует возможностьстатически скомпилированные модули (все они в настоящее время собраны в виде dylibs, которые работают для разработки, но, насколько мне известно, не будут допущены в App Store)

На данный момент этот проект в основном предназначен для отправной точкиКто-нибудь умнее меня, кто хочет и может решить вышеуказанные проблемы.

Мне бы очень хотелось, чтобы было практично писать приложения полностью на Python, но вего точка зрения кажется невозможной.

9 голосов
/ 13 июня 2012

Я тоже начал такой проект.Он поставляется с собственным упрощенным скриптом компиляции, поэтому нет необходимости возиться с autoconf, чтобы получить кросс-скомпилированную статическую библиотеку.Он может создать полностью независимую статическую библиотеку Python с некоторыми общими модулями.Он должен быть легко расширяемым.

https://github.com/albertz/python-embedded/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...