2016-06-18 41 views
0

我已經用tkinter和winsound在Python中構建了一個簡單的音板。音板使用一些.gif和.wav數據文件,這些文件與python腳本本身包含在同一個目錄中。我寫了使用cx_Freeze以下setup.py文件:cx_Freeze不包括指定的文件

import sys 
from cx_Freeze import Executable, setup 

build_exe_options = {'packages':['winsound', 'tkinter'], 'include_files':['battle.gif', 'Battle.wav', 'flag.gif', 'icon.ico', 'ocean.gif', 'Ocean.wav', 'shanty.gif', 'Shanty.wav', 'tavern.gif', 'Tavern.wav']} 

base = None 
if sys.platform == "win32": 
    base = 'Win32GUI' 

setup(name='Savage Worlds Soundboard', 
    version='0.1', 
    description='Soundboard for Pirates of the Spanish Main campaign', 
    options = {'build.exe':build_exe_options}, 
    executables = [Executable("Savage_Worlds_Soundboard.py", base=base)] 
) 

當我建立與Python程序的setup.py建立在命令提示符下,它會在正常的目錄中生成文件夾。然而,當我打開C:X \建立\ exe.win-amd64-3.4 \ Savage_Worlds_Soundboard(可執行文件),我收到以下錯誤:


cx_Freeze: Python error in main script 
--------------------------- 
Traceback (most recent call last): 
    File "C:\Python34\lib\site-packages\cx_Freeze\initscripts\Console.py", line 27, in <module> 
    exec(code, m.__dict__) 
    File "Savage_Worlds_Soundboard.py", line 5, in <module> 
    File "C:\Python34\lib\tkinter\__init__.py", line 3421, in __init__ 
    Image.__init__(self, 'photo', name, cnf, master, **kw) 
    File "C:\Python34\lib\tkinter\__init__.py", line 3377, in __init__ 
    self.tk.call(('image', 'create', imgtype, name,) + options) 
_tkinter.TclError: couldn't open "ocean.gif": no such file or directory 

任何想法?在我看來,像cx_Freeze沒有包含我在setup.py中指定的附加數據文件。也許我錯誤地寫了安裝文件?

+0

只是一個猜測,但您可能需要將圖像移動到構建目錄,以便可執行文件可以找到它們。我懷疑cx_Freeze會將圖像打包到可執行文件中。 – user2027202827

+0

這工作......我覺得很愚蠢。 謝謝!你可以發佈這個答案。 –

+0

不用擔心,使用wxWidgets和C++構建時遇到同樣的麻煩:) – user2027202827

回答

0

您需要將圖像移動到build目錄,以便可執行文件可以找到它們。我懷疑cx_Freeze會將圖像打包到可執行文件中。