Пакуем Python в EXE
Всем известно что питон это интерпретируемый, а не компилируемый язык . И в первую очередь рассчитан для работы в командной строке. Тем не менее, существует много вариантов оформления кода в GUI при необходимости. Но сегодня речь пойдёт об упаковке программы в EXE.
Зачем вообще это надо? Да по сути и не надо в большинстве случаев. Но бывает, что вы написали или скопировали какую-нибудь интересную тулзу, и хотите с ней поделиться. Конечно, если у того, кому вы отправляете прогу есть Python, то проблем нет. А бывает, что человек не шарит совсем в кодинге, и как пользователь тоже не имеет установленного питона нужной версии.
Вот тогда и выручает упаковка файла или файлов в EXE. Такой файл будет запускаться и работать по клику мышки, всё очень просто.
Для сборки файлов в экзешник есть разные приложения. Я рассмотрю самый простой, без всяких заморочек, с которым разберётся любой новичок.
Качаем прогу:
Распаковываем архив. Внутри папки будет конвертер, запускающийся по клику мышки.
Так, нам понадобится подопытный. Для этого я сотряпал простой текстовый редактор, который открывает файл, и после редактирования сохраняет его. Ну или просто в окне можно что-то написать и сохранить.
Код редактора:
Python:
# -*- coding:utf -8 -*- __version__ = 'Version:1.0' from tkinter import * from tkinter import filedialog as fd root = Tk() root.title("Textedit " +str(__version__)) root.resizable(width=False, height=False) root.geometry("420x300+300+300") calculated_text = Text(root,height=15, width=50) def insertText(): file_name = fd.askopenfilename() f = open(file_name) s = f.read() calculated_text.insert(1.0, s) f.close() def extractText(): file_name = fd.asksaveasfilename(filetypes=(("TXT files", "*.txt"), ("HTML files", "*.html;*.htm"), ("All files", "*.*") )) f = open(file_name, 'w') s = calculated_text.get(1.0, END) f.write(s) f.close() def erase(): calculated_text.delete('1.0', END) b1 = Button(text="Открыть",command=insertText) b1.grid(row=3, column=0, sticky=E, padx=5, pady=8,) b2 = Button(text="Сохранить", command=extractText) b2.grid(row=3, column=1, sticky=E, padx=5, pady=8,) erase_button = Button(text="Очистить", command=erase) erase_button.grid(row=3, column=2, padx=35, pady=8, sticky="W") scrollb = Scrollbar(root, command=calculated_text.yview) scrollb.grid(row=4, column=4, sticky='nsew') calculated_text.grid(row=4, column=0, sticky='nsew', columnspan=3) calculated_text.configure(yscrollcommand=scrollb.set) root.mainloop()
Запускаем прогу, так она выглядит
Выставляем следующие настройки -windowed чтобы прога запускалась без консоли, название выходного файла, onefile чтобы сборка была в один файл, noupx уже стоит по умолчанию ибо сжатие не всегда прокатывает. Ну и собственно выбираете нужный файл питоновский, который будете упаковывать. Также есть возможность выбрать иконку для exe-шника, поддерживается только ICO.
Вот что получилось
Жмём Build, прога чуток поколдует, выдаст нам сообщение об успешной сборке.
После этого в папке с конвертором появятся 2 папки
В папке dist и будет лежать наш готовый дистрибутив в формате EXE. Переместите его куда угодно, а потом обе эти папки можно смело удалять. Теперь проверяем работоспособность выходного файла, кликнув на него.
Алиллуйя, работает!
P.S. Редактор писаласся в торопях, там есть косячок - при сохранении файла, расширение само не ставится, нужно вручную писать. Если кто поправит, буду признателен. Мне уже некогда, уезжаю отдыхать на 2 недели сейчас, так что на форуме меня не будет это время.
Наши услуги: @GOdayBot
Внимание!!! Вся Информация на канале "0-day | Уязвимость 0-го дня" для ознакомления, не несёт в себе призыва к чему-либо, автор не несёт никакой ответственности. 18