Итак, наступило новое тысячелетие; Apple махнула рукой; теперь разрешено включать интерпретатор Python в приложение для iPhone (App Store).
Как это сделать? Вся существующая дискуссия (что неудивительно) относится к взлому. (Старый вопрос: могу ли я писать собственные приложения для iPhone с помощью Python )
Моя цель здесь не в написании приложения PyObjC, а в написании обычного приложения ObjC, которое запускает Python как встроенную библиотеку. Затем код Python обратится к собственному коду Какао. Это шаблон «логика управления - это код Python».
Есть ли руководство по созданию Python в XCode, чтобы мое приложение для iPhone могло связать его? Желательно урезанный Python, так как мне не понадобится 90% стандартной библиотеки.
Я, наверное, смогу разобраться в API потоковой передачи и расширений Python; Я сделал это на MacOS. Но только с использованием компиляторов командной строки, а не XCode.
Ответы:
На самом деле не имеет значения, как вы собираете 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. Их предпосылка - это как бы ваше требование.
источник
Я поместил на github очень грубый скрипт, который загружает и собирает python2.6.5 для iPhone и симулятора.
http://github.com/cobbal/python-for-iphone
Работа в процессе
Несколько удручающее обновление почти 2 года спустя: (скопировано из README на github)
источник
pyobjc
сложно скомпилировать, возможно ли это использоватьctypes
? В таком случае этот ответ может быть ключом к разгадке (понимая, что это будет только начало большой и болезненной работы, но все же).Я тоже начал такой проект. Он поставляется со своим собственным упрощенным скриптом компиляции, поэтому нет необходимости возиться с autoconf, чтобы получить кросс-скомпилированную статическую библиотеку. Он может создавать полностью независимую от зависимостей статическую библиотеку Python с некоторыми общими модулями. Он должен легко расширяться.
https://github.com/albertz/python-embedded/
источник