2015-04-15 53 views
2

我正在使用cx_freeze模塊來創建一個安裝程序和可執行文件。這似乎工作正常,但運行可執行文件時,我得到以下錯誤和回溯。Python cx_freeze問題與資源

D:\>"app.exe" 
Traceback (most recent call last): 
    File "C:\Program Files\Python 3.3\lib\site-packages\pkg_resources\__init__.py", line 421, in get_provider 
    module = sys.modules[moduleOrReq] 
KeyError: 'resources.images' 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "C:\Program Files\Python 3.3\lib\site-packages\cx_Freeze\initscripts\Console3.py", line 27, in <module> 
    exec(code, m.__dict__) 
    File "main.py", line 8, in <module> 
    File "C:\Program Files\Python 3.3\lib\site-packages\pkg_resources\__init__.py", line 1148, in resource_filename 
    return get_provider(package_or_requirement).get_resource_filename(
    File "C:\Program Files\Python 3.3\lib\site-packages\pkg_resources\__init__.py", line 423, in get_provider 
    __import__(moduleOrReq) 
    File "C:\Python\64-bit\3.3\lib\importlib\_bootstrap.py", line 1567, in _find_and_load 
    File "C:\Python\64-bit\3.3\lib\importlib\_bootstrap.py", line 1514, in _find_and_load_unlocked 
    File "C:\Python\64-bit\3.3\lib\importlib\_bootstrap.py", line 313, in _call_with_frames_removed 
    File "C:\Python\64-bit\3.3\lib\importlib\_bootstrap.py", line 1567, in _find_and_load 
    File "C:\Python\64-bit\3.3\lib\importlib\_bootstrap.py", line 1531, in _find_and_load_unlocked 
ImportError: No module named 'resources' 

這很奇怪,因爲通過Python運行腳本時沒有出現這樣的錯誤。 (具體而言,按住Shift-F10上PyCharm。)

這是我在寫回溯唯一的腳本:

main.py 

from tkinter import Tk 
from client import Client 
from pkg_resources import resource_filename 

root = Tk() 
root.wm_title("MyApp") 
root.wm_iconbitmap(root, resource_filename('resources.images', 'eternal_logo.ico')) 
root.wm_iconbitmap() 
client = Client(root) 
root.mainloop() 

我setup.py看起來像:

setup.py 

from setuptools import find_packages 
from pkg_resources import resource_filename 
from cx_Freeze import setup, Executable 

setup(
    name='MyApp', 
    version='0.3-alpha', 
    packages=find_packages(), 
    package_data={'': ['*.png', '*.gif', '*.ico']}, 
    executables=[ 
     Executable(
      "main.py", 
      icon=resource_filename('resources.images', 'eternal_logo.ico'), 
      targetName="app.exe" 
     ) 
    ] 
) 

最後一點我的文件結構(略)看起來像:

MyApp/ 
    bin/ 
    build/ 
    client/ 
    __init__.py 
    .. 
    dist/ 
    docs/ 
    preferences/ 
    __init__.py 
    .. 
    resources/ 
    __init__.py 
    images/ 
     __init__.py 
    main.py 
    setup.py 
    __init__.py 

回答

1

這是前一段時間,但因爲我有一次我一個類似的問題被帶回來了。

我相信固定這是添加以下build_exe_optionssetup.py

build_exe_options = { 
    "include_files": [ 
     ('resources', 'resources'), 
     ('config.ini', 'config.ini') 
    ] 
}