2013-03-29 3 views
2

Пожалуйста, несите меня для получения знаний о новинке (недостатке). Я тратил, хотя предыдущие ответы на SO и делал некоторый прогресс, но теперь я действительно застрял и очень ценю некоторую помощь.Проблемы с Py2app: возможно, доступ к файлам изображений?

У меня есть рабочая программа python (pygame), которая включает в себя изображения и звуки, сохраненные в той же папке, что и файл .py. Я пытаюсь превратить его в приложение с py2app.

Я написал файл setup.py и, похоже, работает нормально. Когда я пытаюсь запустить приложение, оно создается в каталоге «/ build /», я просто получаю сообщение об ошибке в всплывающем окне, которое читает «[appname] Error». Когда я открываю консоль, соответствующее сообщение об ошибке выглядит следующим образом:

«30/03/2013 08: 47: 02.425 com.apple.launchd.peruser.501 [192]: ([0x0-0x1de2de1]. org.pythonmac.unspecified.CookieMemory [17113]) Выход с кодом: 255 "

Я думаю, что моя проблема может быть в том, что приложение не может нормально обращаться к файлам данных (изображениям, звукам). Я вижу их там в папке «Содержание/Ресурсы». Чтобы получить изображения и звуковые файлы, включенные в приложение в качестве «Ресурсы», я создал для них новую папку (называемую «Память») (в каталоге/Users), то есть тот же каталог, где и setup.py и my. py программы. И я включил пару строк кода в начале программы .py, чтобы сказать ей, чтобы посмотреть там для изображений и звуковых файлов ... поскольку программа .py первоначально загружала их непосредственно из той же самой папки, в которой она была сохранена. .py программа довольна, что изменения - когда я запускаю его непосредственно через IDLE или терминал - но приложение не ...

Вот мой setup.py файл:

from setuptools import setup 

    APP = ['CookieMemory.py'] 
    DATA_FILES = ['Memory'] 
    OPTIONS = {'iconfile':'cookieIcon.icns','argv_emulation': True} 

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

Вот добавление я сделал в .py файл:

import os,sys 
currentFilePath=sys.argv[0] 
currentDir=os.path.dirname(currentFilePath) 
os.chdir(os.path.join(currentDir,"Memory")) 

Любые предложения, пожалуйста?

ответ

1

Прежде всего (и полностью не связан с вашей проблемой): не используйте argv_emulation, если вам действительно не нужна функциональность (то есть вы хотите, чтобы иметь возможность отбрасывать файлы в вашем приложении и показывать их в sys. argv), эмулятор argv - это взлом и медленный запуск приложения.

Что происходит, когда вы запускаете приложение из терминала, что-то вроде:

$ dist/CookieMemory/Contents/MacOS/CookieMemory 

Это покажет Stderr/стандартный вывод приложения в окне терминала, и что следует с некоторой удаче вам сказать, что продолжается.

Смежные вопросы