iPhone 앱에 Python 포함


94

그래서 그것은 새로운 천년입니다. 애플은 손을 흔들었다. 이제 iPhone (App Store) 앱에 Python 인터프리터를 포함하는 것이 합법적입니다.

이 일을 어떻게하나요? 기존의 모든 논의 (당연히)는 탈옥에 관한 것입니다. (이전 질문 : Python을 사용하여 네이티브 iPhone 앱을 작성할 수 있습니까? )

내 목표는 PyObjC 앱을 작성하는 것이 아니라 Python을 임베디드 라이브러리로 실행하는 일반 ObjC 앱을 작성하는 것입니다. 그런 다음 Python 코드는 네이티브 Cocoa 코드를 다시 호출합니다. "제어 논리는 Python 코드입니다"패턴입니다.

내 iPhone 앱에서 연결할 수 있도록 XCode에 Python을 빌드하는 방법에 대한 가이드가 있습니까? 표준 라이브러리의 90 %가 필요하지 않기 때문에 가급적 벗겨진 Python이 좋습니다.

스레딩과 Python 확장 API를 알아낼 수있을 것입니다. MacOS에서 해봤습니다. 그러나 XCode가 아닌 명령 줄 컴파일러 만 사용합니다.


답변:


30

Python을 빌드하는 방법은 실제로 중요하지 않습니다. 예를 들어 Xcode로 빌드 할 필요가 없습니다.하지만 중요한 것은 해당 빌드의 제품입니다.

즉, 애플리케이션에 정적으로 링크 될 수있는 libPython.a와 같은 것을 빌드해야합니다. .a가 있으면 애플리케이션의 Xcode 프로젝트에 추가 할 수 있으며 여기에서 나머지 앱과 마찬가지로 링크되고 서명됩니다.

IIRC (파이썬을 손으로 빌드 한 지 오래되었습니다) 올바르게 구성하면 즉시 사용 가능한 파이썬이 libPython.a (및 기타 여러 라이브러리)를 빌드합니다.

물론 두 번째 문제는 86 상자 에서 ARM 용 Python을 크로스 컴파일하는 것 입니다. Python은 autoconf 기반 프로젝트이며 autoconf는 크로스 컴파일에있어 골칫거리입니다.

올바르게 말했듯이 작게 만드는 것이 중요합니다.

놀랍지 않은 것은 당신이 이것을하고 싶은 첫 번째 사람이 아니라 iOS 용이 아니라는 것입니다. 파이썬은 iOS를 실행하는 장치보다 훨씬 적은 성능의 장치에 압착되었습니다. 인터넷 검색을 할 때 여러 링크가있는 스레드를 찾았습니다. 유용수 있습니다 .

또한 pyobjc-dev 목록 에 참여할 수도 있습니다 . PyObjC 기반 애플리케이션을 대상으로하는 것은 아니지만 (btw는 좋은 생각입니다-PyObjC가 iOS 친화적이되기까지는 갈 길이 멀다) 이 특정 분야에서 가장 지식이 풍부한 사람 일 것입니다. PyObjC는 PyObjC를 이식하기 전에 iOS에 내장 된 Python 문제를 해결해야합니다. 그들의 전제 조건은 당신의 요구 사항입니다.


링크 주셔서 감사합니다. ( 이 프로젝트 의 훨씬 이전 버전을 위해 Sharp Zaurus에서 Python을 사용 했지만 Python 1.6이었고 다른 누군가가 패키징을 수행했습니다 ...)
Andrew Plotkin

4
저는 한때 Python을 Sony의 PSP로 이식했습니다. Subversion의 역사 중 일부가 도움이 될 것입니다. 그래도 정확한 대답은 아닙니다. 여기 : python-psp.net/trac
fraca7

22

iPhone 및 시뮬레이터 용 python2.6.5를 가져 와서 빌드하는 매우 거친 스크립트를 github에 올렸습니다.

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

진행중인 작업

거의 2 년 후 다소 우울한 업데이트 : (github의 README에서 복사)

이 프로젝트는 정말 만족스럽게 아이폰에서 파이썬을 실행하지 못했고,이 단계에서 어떤 진지한 프로젝트에도 파이썬을 사용하는 것을 추천 할 수 없습니다.

가장 주목할만한 부분은 pyobjc 지원입니다 (더 많은 플랫폼 별 코드에 의존하기 때문에 iPhone으로 이식하기가 훨씬 더 어렵습니다).

또한 모듈을 정적으로 컴파일하는 기능이 누락되었습니다 (현재 모두 개발 용으로 작동하는 dylib로 빌드되었지만 제 지식으로는 App Store에서 허용되지 않음).

이 시점에서이 프로젝트는 대부분 위의 문제를 해결하기를 원하고 해결할 수있는 나보다 똑똑한 사람을위한 출발점이됩니다.

저는 정말 파이썬으로 앱을 작성하는 것이 실용적이기를 바랍니다.하지만이 시점에서는 불가능 해 보입니다.


감사! 며칠 동안 볼 기회는 없지만 곧 시도해 볼 것입니다.
Andrew Plotkin

pyobjc컴파일이 어려운 경우 사용할 수 ctypes있습니까? 이 경우 대답은 단서가 될 수있다 (하지만 여전히, 그냥 큰 고통스러운 작업의 시작이 될 것입니다 실현).
Jacob Oscarson 2012

10

저도 그런 프로젝트를 시작했습니다. 자체적으로 단순화 된 컴파일 스크립트가 함께 제공되므로 교차 컴파일 된 정적 라이브러리를 얻기 위해 autoconf를 엉망으로 만들 필요가 없습니다. 일부 공통 모듈을 사용하여 완전히 종속성이없는 Python 정적 라이브러리를 빌드 할 수 있습니다. 쉽게 확장 할 수 있어야합니다.

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


컴파일 스크립트가 작동하지 않습니다. 컴파일은되지만 '-collections'와 같은 일부 내장 모듈이 없습니다. 어떤 아이디어?
bijan

모든 네이티브 C 모듈을 포함하지 않았습니다. 수정 만하면됩니다.
Albert

오래된 것 같습니다 ... iOS 4.3에서만 작동합니까? 최신 버전에서이 작업을 수행하는 방법을 문서화 할 수 있습니까?
ArtOfWarfare 2015 년

@ArtOfWarfare : 한동안 사용하지 않았습니다. 왜 최신 버전에서는 작동하지 않아야합니까? 문제가 발견되면 GitHub에서 버그 보고서를 작성할 수 있습니다.
Albert는
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.