Конвертировать .py файл и изображение в автономный исполняемый файл - PullRequest
0 голосов
/ 17 октября 2018

У меня есть программа на Python с изображением, которое идет рядом с ним.Изображение отображается в окне tkinter, которое создает программа и является необходимым.Я хотел бы объединить .py файл и .gif файл в один исполняемый файл, используя pyinstaller.

Я знаю, что для создания отдельного файла .py вам нужно использовать --onefile, но я не знаю, как это сделать с включенным изображением.Я относительно уверен, что вам нужно отредактировать файл .spec, но я не знаю, как это сделать.

Мне плевать на иконку программы, только изображение в окне tkinter.

Пожалуйста, предоставьте пошаговые инструкции, поскольку я новичок.

Ответы [ 3 ]

0 голосов
/ 19 октября 2018

Вы можете, возможно, base64-кодировать свой GIF-файл и сохранить его в виде строки в вашем скрипте Python - тогда вам не нужно переносить дополнительный GIF-файл.

Итак, скажем, ваше изображение находится вфайл с именем image.gif, вы можете сделать следующее в Терминале:

base64 -i image.gif -o image.b64

Затем скопировать (текстовое) содержимое файла image.b64 и сохранить в переменной Python:

photo = """R0lGODlh4gLxAPcAAAQEBAoGBgo...L+SwTBVhBCtCVf6lAE"""

Затем загрузите изображение с помощью:

photo = PhotoImage(data=photo)
0 голосов
/ 20 октября 2018

После долгих экспериментов у меня есть пример работы.Это небольшой пример сценария, который загружает изображение и отображает его - единственная сложная часть, где он решает, будет ли он запущен из пакета или в режиме реального времени.

#!/usr/local/bin/python3
from PIL import Image                                                                       
import sys, os

filename = "image.png"

# Work out where the image file is
if getattr( sys, 'frozen', False ) :
   # running in a bundle
   path = os.path.join(sys._MEIPASS, filename)
else :
   # running live
   path = filename

im = Image.open(path)                                                                
im.show() 

Затем я собираю его в один файлс PyInstaller следующим образом:

pyinstaller --add-data "image.png:." --onefile test.py 

, который создает каталог с именем dist, и там вы найдете один файл с именем test, который можно запустить на других машинах ста же ОС, но без установленного Python.

0 голосов
/ 17 октября 2018

Вам необходимо «прикрепить» изображение к вашей программе.Вы можете сделать это так:

- add-data "Файл, который вы хотите добавить."

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

image_file = sys._MEIPASS + "\file.gif"

Почему?Поскольку файл сейчас находится внутри программы, а каталог, который указывает, что файл находится внутри программы: sys._MEIPASS.

...