2014-02-07 2 views
1

현재 파이썬이 코코아 응용 프로그램 내에서 작동하게하려고합니다. 내 첫 번째 단계는 Xcode가 Python과 링크 할 수 있도록 Python을 포함시키는 것입니다. OS X Mavericks 이후로, Python.framework는 더 이상 SDK에 없으므로, 작동하게하려면 this 지침을 따랐습니다.코코아 응용 프로그램에서 파이썬이 작동하도록하기

CpResource libpython2.7.dylib /Users/Phil/Library/Developer/Xcode/DerivedData/Python_Scripting-hiipjmacxsirqkfqczdjdaxbqgfj/Build/Products/Debug/Python\ Scripting.app/Contents/Resources/libpython2.7.dylib

cd "/Users/Phil/Documents/Xcode/Python Scripting" 

builtin-copy -exclude .DS_Store -exclude CVS -exclude .svn -exclude .git -exclude .hg -resolve-src-symlinks /Users/Phil/Documents/Xcode/Python\ Scripting/libpython2.7.dylib /Users/Phil/Library/Developer/Xcode/DerivedData/Python_Scripting-hiipjmacxsirqkfqczdjdaxbqgfj/Build/Products/Debug/Python\ Scripting.app/Contents/Resources 

error: /Users/Phil/Documents/Xcode/Python Scripting/../../../Python: No such file or directory

내가 (예를 들어, Py_IsInitialized()가 인식) 제대로 지시를 따랐다 확신 : 프로젝트 만들기 및 절차 설명에 이어, 엑스 코드는 나에게 오류 메시지를 제공합니다. 그러나 : 진술 Confirm the dialog box, and now Xcode is set to link against libpython2.7.dylib (by using the same -L and -l option settings as above).의 의미는 무엇입니까? 링커 플래그를 수동으로 설정해야합니까?

답변

3

libpython2.7.dylib 시스템을 프로젝트로 끌면 "항목 복사 ..."확인란이 선택 취소되어 있는지 확인하십시오. 라이브러리를 프로젝트에 복사하지 않고 참조 만하려고합니다.

붙여 넣은 CpResource 명령은 Xcode가 .app의 Resources (존재하지 않는 프로젝트)에서 파일을 복사하려고한다는 것을 확신시킵니다. 너도 그걸 원하지 않아. dylib 파일이 번들 자원 복사 아래의 대상 빌드 단계에 있으면 제거해야합니다. (CpResource를 검색하면 유사한 문제가있는 사람들을 찾을 수 있습니다.)

Apple은 스크립팅 언어를 포함 할 때 시스템 설치 버전에 의존하지 말고 자체 버전을 번들하는 것이 좋습니다. 이렇게하면 Apple의 일자 버전을 자비로 사용하지 않거나 해당 버전이 나중에 시스템에서 변경되거나 제거되는 경우입니다.

편집 :

  • 다운로드 및 소스에서 파이썬을 컴파일 :

    당신이 당신의 자신의 파이썬 버전을 묶음으로 처리 할 경우이 내가 (I 버전 3.3을 사용) 내 애플 리케이션 중 하나를 위해 한 일입니다 암호. 정적으로 컴파일하는 것이 좋습니다 (기본적으로이 작업을 수행하도록 설정되었을 수 있음).

  • 정적 라이브러리 (.a 파일), python3.3 라이브러리 폴더를 복사하고 내 Xcode 프로젝트에 침투 한 파일을 포함시킵니다.
  • 내 대상에 대한 빌드 단계가 내 프로젝트에서 내 .app로 python3.3 라이브러리 폴더를 복사하는지 확인하십시오.
  • 환경 변수 PYTHONHOME 및 PYTHONPATH를 myapp 디렉토리에있는 python3.3 디렉토리로 설정하십시오 실행시
  • #INCLUDE "Python.h을"파이썬을 초기화하기 전에 NSBundle 사용)을 검색하고 Py_Initialize로 전화를 걸()
  • 내 안에 python3.3/lib에-dynload/디렉토리의 경로를 (추가합니다. app)를 파이썬의 sys.path 변수에 추가하면 거기에있는 C 컴파일 된 모듈을 가져올 수 있습니다.

그리고 그것은 작동합니다. 옵션

: 당신은 앱에서> 파이썬 100MB의 데이터를 포함 할 수 없습니다

. 2

path/to/built/python -m compileall path/to/python3.3/ -b 

(-b가/필요하지 않을 수 관련 : 나는 제자리 된 .pyc 바이트 코드 파일에 모든 표준 라이브러리 평 소스 파일을 변환하려면이 명령을 사용했다.x)

그런 다음 __pycache__ 및 필요하지 않은 패키지/모듈 (예 : tkinter, 반 중력 등)을 제거하는 작업을 계속 진행했습니다. 내 묶음 파이썬 파일 크기를 약 20 MB (압축시 7 MB)로 가져 왔습니다.

+0

감사합니다. 복사하지 않으려 고합니다. 확실히했습니다. 내 자신의 Python을 설치했는데 Xcode에서 사용할 번들을 만들려면 어떻게해야합니까? – DaPhil

+0

나는 당신이 당신의 프로젝트에 그것을 복사하지 말라고 말한 이유는 당신이 시스템 버전을 말하는 것이라고 생각했습니다. 내 게시물을 편집하여 자신의 버전을 묶는 방법을 설명했습니다. – Zorg

+0

예. 나는 그것을 말하고있었습니다. 혼란을 불러 일으켰습니다. 나는 한 단계 더 나아가 사용자 정의 파이썬을 포함하는 방법에 관심이 있었다. – DaPhil

관련 문제