Как включить файлы с помощью pyinstaller? - PullRequest
0 голосов
/ 03 декабря 2018

Я создал программу на python 3.7, используя также tkinter.Поскольку я использую внешние картинки, мне нужно включать их, когда я компилирую все в один exe.Я попытался сделать --add-data "bg.png;files", но все еще получаю эту ошибку:

_tkinter.TclError: не могу открыть "files / bg.png": нет такого файла или каталога

Вот код:

image = PhotoImage(file="files/bg.png")
w = image.width()
h = image.height()
x = 316
y = 246
mainGui.geometry("%dx%d+%d+%d" % (w, h, x, y))
panel = Label(mainGui, image=image)
panel.pack(side='top', fill='both', expand='yes')

Что я делаю не так?Я также попытался --add-binary, добавив файл в мой файл спецификаций.Серьезно не могу понять это!

1 Ответ

0 голосов
/ 04 декабря 2018

Извините, я подумал, что только -F / - один файл делает такое поведение, но похоже, что любые пакеты с pyinstaller нуждаются в таких изменениях.

Вам нужно изменить свой код следующим образом, как описано вэтот ответ :

import sys

if getattr(sys, 'frozen', False):
    image = PhotoImage(file=os.path.join(sys._MEIPASS, "files/bg.png"))
else:
    image = PhotoImage(file="files/bg.png")

А затем связать его с pyinstaller, как это:

pyinstaller --clean -y -n "output_name" --add-data="files\bg.png;files" script.py
...