2013-03-29 46 views
2

請認真對待新手(缺乏)知識。我已經瀏覽過以前的答案,並取得了一些進展,但我現在真的很困難,並會非常感謝一些幫助。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和我的目錄相同的目錄。 py程序是。我在.py程序的開始部分添加了幾行代碼,告訴它在那裏查找圖像和聲音文件...因爲.py程序最初直接從它保存的同一文件夾中加載它們。該方案的.py很高興與變化 - 當我直接通過空閒或終端運行它 - 但應用程序是不是...

這是我的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 

這將顯示在終端窗口的應用程序的標準錯誤/標準輸出,並應與一些運氣告訴你什麼是繼續。