2011-03-05 4 views

답변

13

몇 시간 후에 문제와 해결책을 찾았습니다. 알고 보니 다른 사람이 비슷한 문제를 경험하고 자신의 기사는 아주 도움이되었다 : 파이썬 프레임 워크가 존재하지 않았기 때문에 다른 사람이 문제로 실행되는 경우

http://b.atcg.us/blog/2010/04/13/py2app-hell-the-first.html

http://www.vijayp.ca/blog/?p=62

이 특정 문제가 발생했다 응용 프로그램에 번들로 제공됩니다. 앱을 마우스 오른쪽 버튼으로 클릭하여 패키지 내용을 확인한 다음 내용/프레임 워크 /로 이동하여 확인할 수 있습니다. Python.framework가 없으면 그렇게해야합니다.

반드시 다운로드하십시오. Python - 첫 번째 문제는 Apple의 Python 패키지 빌드에 대한 의존이었습니다. 이것을 사용하지 마십시오. 자신 만의 Python 버전을 설치해야합니다.

./configure --enable-framework MACOSX_DEPLOYMENT_TARGET=10.6 --with-universal-archs=intel --enable-universalsdk=/ 
make 
sudo make install 

조정 경로, 패키지 설치 : 당신은 스노우 레오파드 (Snow Leopard)를 실행하는 경우, (나는 2.6와 함께 붙어) 버전을 찾아 http://www.python.org/download/releases/으로 이동 GZIP (하지 맥 패키지)를 다운로드하고 다음과 설치 - 여기에서 경로를 조정하여 사용자 정의 설치 버전을 사용하고 있는지 확인해야합니다. 여기에서, 나는 다음과 같은 패키지를 다시 설치 -이 그래서 나는뿐만 아니라 버전 번호를 포함하고있어 종속성 악몽으로 밝혀졌다 :

  • py2app 0.5.2
  • macholib 1.3
  • modulegraph .8.0

이 패키지가 실제로 작동하면 지금 앱을 빌드하고 실행할 수 있습니다. 불행히도, 그들은하지 않습니다. 오류와 해킹 된 솔루션을 조금씩 살펴 보겠지만, 먼저 빌드 파일에 몇 가지 설정을 만들어야합니다. setup.py 파일은 다음과 같은 약간의 뭔가 '좋아한다

첫째 :

from setuptools import setup 

APP = ['Game.py'] 
DATA_FILES = ['data'] 

OPTIONS = { 
    "argv_emulation": False, 
    "compressed" : True, 
    "optimize":2, 
    "iconfile":'data/game.icns',   
} 

setup(
    app=APP, 
    data_files=DATA_FILES, 
    options={'py2app': OPTIONS}, 
) 

다음 여분의 안전을 위해

setup.py를,이 전화 쉘 스크립트를 사용합니다.

build.sh

## Remove previous builds. Start with clean slate. 
rm -rf build dist 

## Force python into 32 bit mode. 
export VERSIONER_PYTHON_PREFER_32_BIT=yes 

## Force build with custom installed python 
/Library/Frameworks/Python.framework/Versions/2.6/bin/python setup.py py2app 

실행 build.sh 앱을 컴파일해야한다. 컴파일되지 않으면 좋은 소식이 있습니다. 그건 당신 잘못이 아닙니다.

다음 키워드 중 일부에 대한 역 추적을 스캔 빌드 스크립트가 실패 경우

잠재적 인 문제 : 라이브러리의 결함으로 인해, 당신은 다음의 일부 (또는 전부)로 실행할 수 있습니다 파이 게임을 찾을 수 없습니다. - py2app의 기본 경로 문제입니다. py2app lib 디렉토리에 boot_app.py에 ... 가져 오기 문 후

sys.path.insert(0, os.path.join(os.getcwd(), 'lib', 'python2.6','lib-dynload')) ## Added to fix dynlib bug 

를 추가합니다.

pythonNone은 - 이것은 파이썬 빌드의 버전 번호를 확인할 수 없습니다 마초 패키지에서 버그가 수 있도록 나타납니다. 이를 해결하기 위해 py2app의 build_app.py에 다음 행을 추가했습니다.

## Add these two lines... 
if not info["version"]: 
    info["version"] = "2.6" 
## Before this line. (line 941 in method copy_python_framework() at time of writing) 
pydir = 'python%s'%(info['version']) 

해당 파일이나 디렉토리 ... Python.framework/[LIB | 포함] - py2app 단순히 파일 시스템 트리에서 깊이 존재하는 디렉토리를 찾고 있습니다. Python.framework 디렉토리로 이동하여 장소를 심볼릭 링크 ...

cd /Library/Frameworks/Python.framework 
sudo ln -s Versions/Current/include/ include 
sudo ln -s Versions/Current/lib lib 

그것을해야! -이 단계는 다른 인텔 컴퓨터에서 작동하는 컴파일 된 응용 프로그램을 만들었습니다.

+3

+1 자신이 훌륭한 답을 썼기 때문에 +1. 누군가는 이것을 확실히 필요로 할 것입니다. :) – Donovan

+0

자세한 설명을 주셔서 감사합니다. 그것은 내 자신의 애플 리케이션을 구축하는 데 많은 도움이되었습니다. –

2

발견 한 항목을 게시 해 주셔서 감사합니다.

나는 비슷한 문제가있었습니다. 나는 당신이 제안한 것에 대한 다양한 조합을 시도해 보았고 위에서 식별 한 boot_app.py의 버그로 인해 하나의 이슈를 격리했습니다.

위의 식별 한 boot_app.py에 한 행 수정을 추가하면 미리 설치된 Apple의 Python (버전 2.6.1) 빌드를 사용해도 모든 것이 작동합니다.

내가주의해야한다

내가 말할 때 정말 즉, 실제 유통에 대한 py2app 응용 프로그램을 구축하는 일반 명령을 사용하여 의미 "모든 것이 일"

python setup.py py2app 

은 "별칭"모드. 즉

python setup.py py2app -A 

py2app 문서가 개발 중에 사용하기를 제안하지만 여전히 동일한 모듈을 찾을 수없는 오류가있는 경우 작동하지 않습니다. 그러나 실제 배포판은 전혀 작동하지 않는 것보다 효과적입니다! 다시 고마워.

관련 문제