Нашел проблему и решение через много часов. Оказывается, другие люди сталкивались с подобными проблемами, и их статьи были весьма полезны:
http://b.atcg.us/blog/2010/04/13/py2app-hell-the-first.html
http://www.vijayp.ca/blog/?p=62
В случае, если кто-то столкнулся с проблемой, эта конкретная проблема была вызвана тем, что среда Python не была встроена в приложение. Вы можете подтвердить это, щелкнув правой кнопкой мыши свое приложение, чтобы просмотреть содержимое пакета, а затем перейти к Contents / Frameworks /. Если Python.framework не существует, он должен быть.
Обязательно загрузите Python -
Моей первой проблемой была зависимость от сборки Apple в пакете Python. Не используйте это. Вам необходимо установить собственную версию Python. Перейдите на http://www.python.org/download/releases/,, найдите версию (я придерживался версии 2.6), загрузите gzip (не пакет mac) и установите со следующим, если вы используете Snow Leopard:
./configure --enable-framework MACOSX_DEPLOYMENT_TARGET=10.6 --with-universal-archs=intel --enable-universalsdk=/
make
sudo make install
Настройка путей, установка пакетов - Отсюда вам необходимо настроить пути, чтобы убедиться, что вы используете установленную пользователем версию. Отсюда я переустановил следующие пакеты - это оказалось кошмаром зависимости, поэтому я включаю и номера версий:
- py2app 0.5.2
- махолиб 1,3
- modulegraph .8.0
Если эти пакеты действительно сработали, вы сможете создать и запустить приложение прямо сейчас. К сожалению, нет. Я немного углублюсь в ошибки и мои взломанные решения, но в файле сборки есть некоторые настройки, которые нужно сделать в первую очередь.
Сначала файл setup.py должен выглядеть примерно так:
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},
)
тогда для большей безопасности я использую сценарий оболочки для вызова этого.
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 должен скомпилировать приложение. Если он не скомпилируется, у меня хорошие новости - это не твоя вина. Из-за сбоев в библиотеках вы можете столкнуться с некоторыми (или всеми) из следующих факторов:
Потенциальные проблемы
В случае сбоя сценария сборки просканируйте трассировку на наличие следующих ключевых слов:
pygame не найден - основная проблема с путями в py2app. Добавить ...
sys.path.insert(0, os.path.join(os.getcwd(), 'lib', 'python2.6','lib-dynload')) ## Added to fix dynlib bug
после операторов импорта в boot_app.py в библиотеке py2app.
pythonNone - Это ошибка в пакете macho, из-за которой он не может определить номер версии вашей сборки python. Чтобы решить эту проблему, я добавил следующие строки в build_app.py в py2app.
## 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 | include] - py2app просто ищет каталоги, которые находятся глубже в дереве файловой системы. Перейдите в каталог Python.framework и вставьте ссылку на место ...
cd /Library/Frameworks/Python.framework
sudo ln -s Versions/Current/include/ include
sudo ln -s Versions/Current/lib lib
Это должно сделать это! - Эти шаги создали скомпилированное приложение, которое работало на других машинах Intel.