PyInstaller (1 ファイル モード) で exe ファイルを作成しようとしています。私のプログラムは単一のファイルです (Try.py を使用)。私が作成したeggファイルから「TrySystem」というクラスをインスタンス化する超シンプルなファイルです。「TrySystem」クラスは XRC ファイルをロードし、wxPython を使用してビットマップ ボタンを配置します。Python プロジェクトでのリソースの管理で説明されているように、XRC と画像ファイルは内部の卵リソースとして保存されます。
Mac(10.8.5)で卵を準備します:
sudo python setup.py bdist_egg
次に、それを winXP マシン (実際には VM と同じコンピューター上で実行されます) にコピーしてインストールします。
easy_install Try\try2\dist\try3-1.0-py2.7.egg
次に、Python ターミナル (WinXP 上) から「python usingTry.py」を実行しようとすると、すべて正常に動作し、フレームとボタンが表示されます。次に、「usingTry.py」(WinXP の場合) から exe ファイルを準備します。
Try\users\usingTry>pyinstaller.py -F usingTry.py
そして、私はそれを実行しようとします:
Try\users\usingTry>dist\usingTry.exe
Traceback (most recent call last):
File "<string>", line 11, in <module>
File "<string>", line 4, in __init__
File "z:\Documents\workspace\python\Try\users\usingTry\build\pyi.win32\usingTry\out00-PYZ.pyz\try3", line 35, in __init__
File "z:\Documents\workspace\python\Try\users\usingTry\build\pyi.win32\usingTry\out00-PYZ.pyz\try3", line 8, in __init__
File "z:\Documents\workspace\python\Try\users\usingTry\build\pyi.win32\usingTry\out00-PYZ.pyz\wx._core", line 7981, in __init__
File "z:\Documents\workspace\python\Try\users\usingTry\build\pyi.win32\usingTry\out00-PYZ.pyz\wx._core", line 7555, in _BootstrapApp
File "z:\Documents\workspace\python\Try\users\usingTry\build\pyi.win32\usingTry\out00-PYZ.pyz\try3", line 14, in OnInit
File "z:\Documents\workspace\python\Try\users\usingTry\build\pyi.win32\usingTry\out00-PYZ.pyz\pkg_resources", line 868, in resource_filename
File "z:\Documents\workspace\python\Try\users\usingTry\build\pyi.win32\usingTry\out00-PYZ.pyz\pkg_resources", line 181, in get_provider
File "c:\programs\pyinstaller-2.0\PyInstaller\loader\iu.py", line 409, in importHook
raise ImportError("No module named %s" % fqname)
ImportError: No module named try3.resources
誰かがこれを解決する方法を知っていますか? このリンクには、すべてを含む zip ファイルがあります。
try.zip:
Try/
try2/ (this is the code that creates the egg)
setup.py
ez_setup.py
try3/ (the egg's code)
__init__.py
resources/ (here are the resource files used in the egg)
__init__.py
main.xrc
stopButton.png
build/
... (files created while I built the egg)
dist/
try3-1.0-py2.7.egg (the prepared egg file)
try3.egg-info/
...
users/
usingTry/ (here is the code that uses the egg file)
usingTry.py
usingTry.spec
dist/
usingTry.exe (created by "pyinstaller -F usingTry.py")
try3/ (I manually copied it here from Try/try2/ so the exe file works)
build/ (created by PyInstaller)
...
logdict2.7.5.final.0-1 (created by PyInstaller)
Try\try2\try3 フォルダー (卵のコードを含む) が、作成された exe ファイルがある場所 (Try\users\usingTry\dist) に手動でコピーされていることがわかります。これは、exeファイルを機能させるためです。PyInstaller で生成された exeでこの回避策が機能しないことがわかりました。プロジェクトは ReportLab を使用します。
私がやりたいのは、この回避策を避けて、物事がうまくいくことです。卵ファイルの使用を完全にサポートすることが PyInstaller Web サイトで宣言されているため、非常に単純なものでなければなりません。