2

まじで初心者(知識不足)の私にはご容赦ください。SOに関する以前の回答を調べて、ある程度の進歩を遂げましたが、今は本当に行き詰まっており、助けていただければ幸いです。

.py ファイルと同じフォルダーに保存された画像とサウンドを含む動作中の python (pygame) プログラムがあります。私はpy2appでアプリに変えようとしています。

setup.py ファイルを作成しましたが、問題なく動作するようです。「/build/」ディレクトリ内で作成したアプリを実行しようとすると、ポップアップ ウィンドウに「[appname] エラー」というエラーが表示されます。コンソールを開くと、関連するエラー メッセージは次のようになります。

" 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"))

何か提案はありますか?

4

1 に答える 1

1

まず第一に(そしてあなたの問題とはまったく関係ありません):実際に機能が必要な場合(つまり、アプリケーションにファイルをドロップしてsys.argvに表示できるようにしたい場合)を除いて、argv_emulationを使用しないでください。 argv エミュレーターはハックであり、アプリケーションの起動が遅くなります。

ターミナルからアプリケーションを起動すると、次のようになります。

$ dist/CookieMemory/Contents/MacOS/CookieMemory

これにより、端末ウィンドウにアプリケーションの stderr/stdout が表示され、運が良ければ何が起こっているかがわかります。

于 2013-03-31T13:31:01.490 に答える