Самые популярные инструменты для этой задачи в Python:
PyInstaller (самый популярный и рекомендуемый) Cx_Freeze Nuitka (компилирует Python в C-код, что может дать прирост производительности)
Давайте сосредоточимся на PyInstaller, так как он наиболее прост в использовании и гибок.
Шаг 1: Установка PyInstaller
Для начала вам нужно установить PyInstaller с помощью pip:
Bash
Pip install pyinstaller
Шаг 2: Создание простого Python-скрипта
Давайте создадим простой пример скрипта, который мы будем преобразовывать в. exe. Сохраните его как my_app. py:
Python
# my_app. py
Import tkinter as tk
From tkinter import messagebox
Def show_message():
messagebox. showinfo("Приветствие", "Привет из исполняемого файла Python!")
Def main():
root = tk. Tk()
root. title("Мое Python приложение")
root. geometry("300x150")
label = tk. Label(root, text="Нажмите кнопку ниже:")
label. pack(pady=20)
button = tk. Button(root, text="Показать сообщение", command=show_message)
button. pack(pady=10)
root. mainloop()
If __name__ == "__main__":
main()
Шаг 3: Создание. exe файла с помощью PyInstaller
Откройте командную строку (CMD) или PowerShell и перейдите в каталог, где находится ваш файл my_app. py.
Базовая команда:
Самая простая команда для создания. exe файла:
Bash
Pyinstaller my_app. py
После выполнения этой команды PyInstaller начнет работать. Он создаст несколько каталогов и файлов:
- Build/: Временные файлы, используемые PyInstaller в процессе сборки. Dist/: Здесь будет находиться ваш исполняемый. exe файл и все необходимые библиотеки.
Если вы перейдете в папку dist/my_app/, вы найдете my_app. exe. При запуске этого файла откроется окно Tkinter, как и ожидалось.
Полезные опции PyInstaller:
Часто используются следующие опции:
· -w или —windowed / —noconsole: Создает приложение без консольного окна. Идеально для GUI-приложений (как наш пример с Tkinter).
Bash
Pyinstaller --windowed my_app. py
Или
Bash
Pyinstaller --noconsole my_app. py
· —onefile: Упаковывает все в Один исполняемый файл. Это очень удобно для распространения, но запуск может быть немного медленнее, так как при старте. exe файл распаковывает временные файлы.
Bash
Pyinstaller --onefile --windowed my_app. py
· —icon=your_icon. ico: Добавляет пользовательскую иконку к вашему. exe файлу. Иконка должна быть в формате. ico.
Bash
Pyinstaller --onefile --windowed --icon=my_icon. ico my_app. py
(Убедитесь, что my_icon. ico находится в той же папке или укажите полный путь к нему).
· —add-data "source;destination": Включает дополнительные файлы или папки, которые ваше приложение использует (например, изображения, конфигурационные файлы, базы данных).
- source: Путь к файлу/папке, которую нужно включить. destination: Путь внутри окончательной сборки, куда файл/папка должны быть скопированы. Важно для Windows: Разделитель для пути к файлу/папке должен быть ; (точка с запятой).
Bash
# Если у вас есть папка 'assets' с изображениями
Pyinstaller --onefile --windowed --add-data "assets;assets" my_app. py
Если ваш скрипт пытается получить доступ к этим файлам, вам может понадобиться получить путь к этим файлам внутри упакованного приложения. PyInstaller предоставляет функцию sys._MEIPASS для этого:
Python
Import sys
Import os
Def resource_path(relative_path):
"""Получает абсолютный путь к ресурсу, для работы в PyInstaller"""
try:
# PyInstaller создает временную папку и сохраняет путь в _MEIPASS
base_path = sys._MEIPASS
except Exception:
base_path = os. path. abspath(".")
return os. path. join(base_path, relative_path)
# Пример использования:
# image_path = resource_path(os. path. join("assets", "my_image. png"))
# photo = tk. PhotoImage(file=image_path)
· —clean: Удаляет временные файлы сборки перед началом процесса. Полезно, если возникают проблемы.
· —name "My Awesome App": Указывает имя для выходного. exe файла и папки в dist/.
Bash
Pyinstaller --onefile --windowed --name "MyApp" my_app. py
Шаг 4: Распространение. exe файла
После успешной сборки, .exe файл (и, возможно, сопутствующие DLL-файлы, если вы не использовали —onefile) будут находиться в каталоге dist/. Вы можете взять этот файл (или папку) и передать его другим пользователям, у которых нет Python.
Важные соображения:
Размер файла: Упакованные .exe файлы могут быть довольно большими, особенно с опцией —onefile, поскольку они включают интерпретатор Python и все необходимые библиотеки. Зависимости: PyInstaller пытается автоматически обнаружить все зависимости, но иногда ему требуется помощь (например, для динамически импортируемых библиотек). В таких случаях можно использовать опции —hidden-import или создавать. spec файл для более тонкой настройки. Антивирусы: Иногда антивирусы могут ошибочно помечать. exe файлы, созданные PyInstaller, как подозрительные. Это ложные срабатывания, но о них стоит знать. Виртуальные окружения: Настоятельно рекомендуется работать с PyInstaller внутри Виртуального окружения Python. Это гарантирует, что PyInstaller упакует только те библиотеки, которые действительно используются в вашем проекте, а не все, что установлено глобально. Платформозависимость: .exe файл, созданный на Windows, будет работать только на Windows. Для создания исполняемых файлов для macOS или Linux, вам нужно запускать PyInstaller на соответствующей операционной системе.
PyInstaller — это мощный и надежный инструмент, который значительно упрощает распространение ваших Python-приложений.