Я пытаюсь использовать cxfreeze для создания моих сценариев Python в файле .exe
. Однако мои скрипты используют некоторые внешние файлы данных, которые не упаковываются в созданный файл libary.zip
.Как я могу включить внешние ресурсы с помощью cxfreeze?
Например, мои скрипты находятся в src/
, а внешние данные находятся в src/data/
. Я указал свойство include_files
в build_exe_options
, но это только копии каталог и файлы в встроенный каталог; он не добавляет их в library.zip
, где скрипты в конечном итоге ищут файлы.
Даже если я зашел в созданный library.zip
и вручную добавлю каталог data
, я получаю ту же ошибку. Любая идея, как получить cxfreeze
для соответствующего размещения этих внешних ресурсов?
setup.py
from cx_Freeze import setup, Executable
build_exe_options = {"includes" : ["re"], "include_files" : ["data/table_1.txt", "data/table_2.txt"]}
setup(name = "My Script",
version = "0.8",
description = "My Script",
options = { "build_exe" : build_exe_options },
executables = [Executable("my_script.py")])
fileutil.py (где он пытается прочитать файлы ресурсов)
def read_file(filename):
path, fl = os.path.split(os.path.realpath(__file__))
filename = os.path.join(path, filename)
with open(filename, "r") as file:
lines = [line.strip() for line in file]
return [line for line in lines if len(line) == 0 or line[0] != "#"]
... вызывается с ...
read_file("data/table_1.txt")
Ошибка Traceback
Traceback (most recent call last):
File "C:\Python33\lib\site-packages\cx_Freeze\initscripts\Console3.py", line 2
7, in <module> exec(code, m.__dict__)
File "my_script.py", line 94, in <module>
File "my_script.py", line 68, in run
File "C:\workspaces\py\test_script\src\tables.py", line 12, in load_data
raw_gems = read_file("data/table_1.txt")
File "C:\workspaces\py\test_script\src\fileutil.py", line 8, in read_file
with open(filename, "r") as file:
FileNotFoundError: [Errno 2] No such file or directory:
'C:\\workspaces\\py\\test_script\\src\\build\\exe.win32-3.3\\library.zip\\data/table_1.txt'
Вот соответствующий бит документов: http://cx-freeze.readthedocs.org/en/latest/faq.html#using-data-files –