请认真对待新手(缺乏)知识。我已经在SO上搜索过以前的答案并取得了一些进展,但我现在真的陷入困境,真的很感激一些帮助。
我有一个工作的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“
我认为我的问题可能是该应用无法正确访问数据文件(图像,声音)。我可以在“Contents / Resources”文件夹中看到它们。为了将应用程序中包含的图像和声音文件作为资源,我为它们(在/ Users)目录中创建了一个新文件夹(称为“Memory”) - 即与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"))
有什么建议吗?
答案 0 :(得分:1)
首先(并且与您的问题完全无关):除非您确实需要该功能,否则不要使用argv_emulation(也就是说,您希望能够删除应用程序上的文件并将它们显示在sys.argv中),argv模拟器是一个黑客和缓慢的应用程序启动。
从终端启动应用程序时会发生什么,例如:
$ dist/CookieMemory/Contents/MacOS/CookieMemory
这将在终端窗口中显示应用程序的stderr / stdout,并且应该有一些运气告诉你发生了什么。