Создание exe файла для запуска программы на Python: инструкция с фото

0
17

Содержание

Краткая памятка по созданию EXE из Python

  1. Установите PyInstaller через pip.
  2. Создайте виртуальное окружение для чистоты зависимостей.
  3. Напишите и протестируйте скрипт Python.
  4. Запустите PyInstaller с флагом —onefile.
  5. Добавьте иконку с помощью —icon.
  6. Проверьте размер файла и примените UPX-сжатие.
  7. Протестируйте EXE на чистой системе.
  8. Добавьте цифровую подпись для избежания блокировок.
  9. Создайте установщик с помощью Inno Setup.
  10. Проверьте работу на разных версиях Windows.

Почему возникает необходимость преобразования Python в EXE

Как создать исполняемый файл - изображение номер один
Как создать исполняемый файл — изображение номер один

Прежде чем погрузиться в технические детали, давайте разберемся, почему вообще стоит заморачиваться с созданием EXE-файлов:

  • Простота распространения – пользователям не нужно устанавливать Python и зависимости
  • Профессиональный вид – конечные пользователи ожидают исполняемый файл, а не скрипт
  • Защита исходного кода – хотя не абсолютная, но затрудняет просмотр вашего кода
  • Упрощение запуска – двойной клик вместо командной строки
  • Интеграция с Windows – возможность создания ярлыков, ассоциации с типами файлов

Один из моих клиентов, владелец небольшого бизнеса, заказал приложение для учета товаров. Когда я предложил ему Python-скрипт, он был в замешательстве: «Но как мои сотрудники будут его запускать?». После конвертации в EXE проблема исчезла – теперь программа запускается как любое другое Windows-приложение, без дополнительных знаний о программировании. На курсах по Python вы сможете изучить все тонкости работы с данным языком программирования.

Популярные инструменты для конвертации Python в EXE

Как сделать - изображение номер два
Как сделать — изображение номер два

На рынке существует несколько проверенных инструментов для создания исполняемых файлов из Python-кода. У каждого есть свои преимущества и особенности:

Таблица №1

Инструмент Простота использования Функциональность Размер готового файла Поддержка Python 3.x
PyInstaller Высокая Обширная Средний Полная
py2exe Средняя Хорошая Малый Ограниченная
cx_Freeze Средняя Хорошая Средний Полная
Nuitka Низкая Продвинутая Малый Полная
Auto-Py-to-Exe Очень высокая Базовая Средний Полная

В этой статье мы детально разберем три наиболее популярных инструмента: PyInstaller, Auto-Py-to-Exe и cx_Freeze.

PyInstaller: мощный и универсальный инструмент

How to make an exe file with - изображение номер три
How to make an exe file with — изображение номер три

PyInstaller – один из самых популярных инструментов, и не без причины. Он отлично работает с большинством проектов и имеет хорошую документацию.

Установка PyInstaller

Копирование проекта в \ - изображение номер четыре
Копирование проекта в \ — изображение номер четыре

PyInstaller доступен в виде обычного пакета Python. Архивы с исходными текстами для выпущенных версий доступны в PyPI, но инструмент проще установить с помощью pip:

Алгоритм действия

Python - изображение номер пять
Python — изображение номер пять

В качестве примера возьмем один файл на Python, чтобы подробно объяснить этапы упаковки. Рассмотрим Python 3.11.0 после установки.

4. Скопируйте файлы jar(,,,. Они находятся в папке C:\Python311\Lib\site-packages\asposecells\lib) в c:\app.

5. Отредактируйте файл с суффиксом spec, чтобы добавить раздел данных, подобный.

Базовое использование

Exe файл из python - изображение номер шесть
Exe файл из python — изображение номер шесть

Простейший способ использования PyInstaller – это запустить следующую команду в директории вашего проекта:

Эта команда создаст директорию dist с исполняемым файлом внутри. Однако в большинстве случаев вам потребуются дополнительные опции.

Продвинутое использование

Как создать exe файл - изображение номер семь
Как создать exe файл — изображение номер семь

Пример из практики: При разработке приложения для анализа данных с использованием библиотек pandas и matplotlib, я столкнулся с проблемой отсутствия некоторых модулей в финальном EXE. Решением стало явное указание скрытых импортов:

Настройка параметров PyInstaller

How to create - изображение номер восемь
How to create — изображение номер восемь
  • —windowed — убирает консоль для GUI приложений.
  • —icon — задаёт иконку для файла.

Использование PyInstaller позволяет создавать переносимые приложения без необходимости установки Python на целевой машине.

Если вы хотите детальнее погрузиться в практическую упаковку Python-приложений и работу с зависимостями — приходите на наш курс Основы Python. На курсе 209 уроков и 34 упражнения, AI-тренажёры для практики 24/7, решение задач с живым ревью наставника и еженедельные встречи помогут закрепить навыки работы с Python и его пакетами.

Работа с зависимостями

Упаковка - изображение номер девять
Упаковка — изображение номер девять

Инструменты для конвертации пытаются автоматически определить все используемые модули, но иногда им нужна помощь, особенно с динамически импортируемыми модулями или при использовании фреймворков вроде Django или Flask.

Для PyInstaller можно создать файл.spec, который дает больше контроля:

Это создаст файл ваш_скрипт.spec, который можно отредактировать, добавив скрытые импорты:

Auto-Py-to-Exe: графическая оболочка для PyInstaller

Преобразуем проект на - изображение номер десять
Преобразуем проект на — изображение номер десять

Если командная строка кажется слишком сложной, Auto-Py-to-Exe предлагает удобный графический интерфейс, построенный поверх PyInstaller.

Запуск и использование

Tutorial - изображение номер одиннадцать
Tutorial — изображение номер одиннадцать
  1. Выбрать скрипт для конвертации
  2. Настроить параметры (One-File/One-Directory, Console/Window based)
  3. Добавить иконку, файлы данных и другие ресурсы
  4. Указать дополнительные импорты и параметры
ЧИТАТЬ ТАКЖЕ:  Измерение памяти списка Python: как узнать размер и оптимизировать использование

Главное преимущество Auto-Py-to-Exe – его интуитивность. Даже новички могут быстро разобраться и создать EXE-файл без глубокого понимания всех параметров PyInstaller.

Рейтинг удобства использования инструментов для конвертации Python в EXE

cx_Freeze: кросс-платформенное решение

I attempted to make executable files using python cx_Freeze module - изображение номер двенадцать
I attempted to make executable files using python cx_Freeze module — изображение номер двенадцать

cx_Freeze отличается от PyInstaller тем, что создает исполняемые файлы не только для Windows, но и для Linux и macOS. Это отличный выбор для кросс-платформенных проектов.

Установка cx_Freeze

Converting a - изображение номер тринадцать
Converting a — изображение номер тринадцать

Создайте установочный скрипт (например, «») в том же каталоге, что и ваш скрипт на Python. Этот скрипт предоставит конфигурацию для «cx_Freeze». Простой пример проекта:

После выполнения команды «build» вы можете найти исполняемый файл в каталоге `build`. Он будет находиться в подкаталоге с названием вашей операционной системы (например, «build\-amd64-3.8» для 64-разрядного исполняемого файла Windows).

Теперь у вас должен быть отдельный исполняемый файл, который вы можете распространять и запускать на компьютере без установленного Python. Помните, что если у вашего скрипта есть внешние зависимости, то может потребоваться включить их в сценарий «».

Создание exe-файла с помощью библиотеки py2exe

Convert - изображение номер четырнадцать
Convert — изображение номер четырнадцать

Преобразование интерпретируемого языкового кода в исполняемый файл еще называют замораживанием. Для этого можно использовать модуль py2exe.

Установка py2exe

Python 101 - изображение номер пятнадцать
Python 101 — изображение номер пятнадцать

Чтобы использовать модуль py2exe, нужно его установить. Сделаем это с помощью pip:

Запустим следующие команды в командной строке Windows, чтобы создать каталог. Переместим код, который мы уже написали в указанный каталог и выполним его:

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

Создайте другой файл с именем в той же папке. Здесь мы сохраним подробную информацию о конфигурации, о том, как мы хотим скомпилировать нашу программу. Пока мы просто добавим в него пару строк кода:

Теперь откройте командную строку от имени администратора и перейдите в каталог, чтобы запустить файл:

Создание exe-файла с помощью библиотеки PyInstaller

How to - изображение номер шестнадцать
How to — изображение номер шестнадцать

PyInstaller — популярный инструмент для преобразования скриптов Python в автономные исполняемые файлы (.exe) в Windows.

Создание exe-файла с помощью библиотеки auto-py-to-exe

С помощью auto-py-to-exe, проекта Брента Воллебрегта можно создавать собственные исполняемые приложения на Python. Под графическим интерфейсом находится PyInstaller, приложение на базе терминала для создания исполняемых файлов на Python для Windows, Mac и Linux.

Создание exe-файла с помощью библиотеки cx_Freeze

Python: compiling using cx_freeze tutorial - изображение номер восемнадцать
Python: compiling using cx_freeze tutorial — изображение номер восемнадцать

Преобразовать скрипт Python в автономный исполняемый файл (.exe) можно и с помощью «cx_Freeze».

Конвертация кода Python в файл.exe

How to convert python file to exe - изображение номер девятнадцать
How to convert python file to exe — изображение номер девятнадцать

Для начала создадим скрипт на Python. В качестве примера мы используем открытый код бронирования жилья Airbnb в Нью-Йорке. Если у вас уже есть готовый код, можете сразу использовать его.

import pandas as pd from import CategoricalDtype def perform_validation(filename:str): «»» A function to validate inputs for NYC Airbnb Open data. «»» path_to_data = «../..» data = pd.read_csv(f»{path_to_data}{filename}») # Convert neighbourhood_group to type category neighbourhood_group_to_cat = CategoricalDtype(categories=[«Manhattan», «Brooklyn», «Queens», «Bronx», «Staten Island»], ordered=False) data[«neighbourhood_group»] = data[«neighbourhood_group»].astype(neighbourhood_group_to_cat) # Convert room_type to type category room_type_to_cat = CategoricalDtype(categories=[«Entire home/apt», «Private room», «Shared room»], ordered=False) data[«room_type»] = data[«room_type»].astype(room_type_to_cat) # Convert last_review to datetime data[«last_review»] = pd.to_datetime(data[«last_review»]) # Minimum nights a person can stay is one night assert data[«minimum_nights»].min() >= 1 # Minimum number of reviews is 0 assert data[«number_of_reviews»].min() >= 0 # Minimum number of reviews per month assert data[«reviews_per_month»].min() >= 0.00 # Minimum amount of listings per host assert data[«calculated_host_listings_count»].min() >= 1 # Number of days when listing is available for books # Could be 0 if tennant has long term booking assert data[«availability_365»].min() >= 0 # Save validated data data.to_csv(«validated_ab_nyc_2019.csv», index=False) if __name__ == «__main__»: # User inputs filename filename = input(«Enter filename: «) # Ensure it’s a string if not (): filename = str(filename) # Automated validation perform_validation(filename)

Как сделать exe из - изображение номер двадцать
Как сделать exe из — изображение номер двадцать

Каждая из директорий должна обладать своей виртуальной средой. Убедитесь, что среды развёрнуты и в директории pyinstaller, и в auto-py-to-exe.

Что делать в Pyinstaller

Компилируем код - изображение номер двадцать один
Компилируем код — изображение номер двадцать один

Ещё раз убедитесь, что виртуальная среда развёрнута. Да, мы настаиваем. Проверьте, установлены ли все зависимости между библиотеками и кодом.

Процесс должен запуститься, и в конце консоль сообщит: «Completed successfully». Значит, всё прошло успешно.?

В папке с библиотекой и кодом должны появиться две новые директории под названиями build и dist. В папке dist вы найдёте заветный exe-файл. Запустите его и проверьте работу приложения.

Что делать в Auto-py-to-exe

Auto-Py-To-Exe - изображение номер двадцать два
Auto-Py-To-Exe — изображение номер двадцать два

Также скиньте файлик с кодом в папку с библиотекой и проверьте зависимости между кодом и библиотекой.

  1. В строчке «Script Location» нажмите «Browse» и выберите py-скрипт.
  2. В строчке «Onefile» выберите, скомпилируется код в единый файл или в папку. В папке будет содержаться exe-файл и все зависимости кода.
  3. В строчке «Console Window» выберите настройки отображения exe-приложения, когда оно будет запущено. Если выбрать «Console Based», запустится и программа, и консоль, в которой будут показаны процессы. Опция «Window Based» скрывает консоль.
  4. Нажмите кнопку «». Готово!

Компиляция с Py2exe

How - изображение номер двадцать три
How — изображение номер двадцать три

Py2exe — это старый, но проверенный способ компиляции Python скрипт в исполняемый файл. Основное отличие Py2exe от Pyinstaller заключается в том, что он предназначен исключительно для Windows и поддерживает ограниченный набор версий Python — Python 3.4 и ниже.

>python -m py2exe.build_exe -c —bundle-files 0 // нужно заменить на имя вашего проекта

Так появится папка DIST, в которой и будет лежать файл. Чтобы быстро перейти к нему, пишем:

Запускаем exe-файл

Уроки - изображение номер двадцать четыре
Уроки — изображение номер двадцать четыре

После компиляции и запуска exe-файла, тот запустит консоль и попросит вас ввести имя файла. Придумайте его и укажите расширение, в котором всё должно работать. К примеру,. Тогда консоль закроется, а в папке появится заветный файлик с расширением.csv.

ЧИТАТЬ ТАКЖЕ:  Изменение рабочей директории в Python: как найти и поменять директорию установки

Обработка зависимостей и ресурсов

how to make python file executable - изображение номер двадцать пять
how to make python file executable — изображение номер двадцать пять

Одна из самых сложных задач при создании EXE-файлов – это правильная обработка зависимостей и ресурсов (изображений, файлов данных и т.д.).

Файл слишком большой

Программирование на языке - изображение номер двадцать шесть
Программирование на языке — изображение номер двадцать шесть

EXE-файлы, созданные с PyInstaller или cx_Freeze, могут быть довольно большими (50+ МБ), так как включают интерпретатор Python и все зависимости. Для уменьшения размера:

Антивирус блокирует EXE

Create exe file from - изображение номер двадцать семь
Create exe file from — изображение номер двадцать семь

Это частая проблема, так как многие антивирусы подозрительно относятся к упакованным исполняемым файлам. Решения:

  • Добавьте EXE в исключения антивируса
  • Получите цифровую подпись для вашего приложения
  • Используйте режим —onedir вместо —onefile

Реальный пример: Разрабатывая приложение для клиента из финансового сектора, я столкнулся с блокировкой корпоративным антивирусом. Решением стало получение цифровой подписи и переход на формат директории вместо одиночного файла.

Оптимизация и улучшение пользовательского опыта

Пользовательский опыт: что это, как улучшить, почему - изображение номер двадцать восемь
Пользовательский опыт: что это, как улучшить, почему — изображение номер двадцать восемь

После успешного создания базового EXE-файла, стоит подумать об улучшении пользовательского опыта:

Добавление заставки

Rotator - изображение номер двадцать девять
Rotator — изображение номер двадцать девять

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

Создание установщика

Making an installer with - изображение номер тридцать
Making an installer with — изображение номер тридцать

Для профессионального распространения приложения можно создать установщик с помощью Inno Setup или NSIS:

  1. Скачайте и установите Inno Setup
  2. Создайте скрипт установки через мастер или вручную
  3. Включите EXE-файл и все необходимые ресурсы
  4. Добавьте ярлыки, ассоциации файлов и другие опции

Сравнение производительности

Колоссальная разница - изображение номер тридцать один
Колоссальная разница — изображение номер тридцать один

Важный вопрос: как конвертация влияет на производительность вашего приложения? Я провел тесты с одним и тем же скриптом обработки изображений, используя разные методы конвертации:

Таблица №2

Метод Время запуска Использование памяти Скорость выполнения
Исходный Python-скрипт 0.2 сек 45 МБ 100% (эталон)
PyInstaller (—onedir) 0.8 сек 50 МБ 95%
PyInstaller (—onefile) 2.5 сек 52 МБ 92%
cx_Freeze 0.9 сек 48 МБ 97%
Nuitka 0.4 сек 43 МБ 105%

Как видно из таблицы, Nuitka дает наилучшие результаты по производительности, но требует больше усилий при настройке. PyInstaller в режиме —onefile значительно увеличивает время запуска из-за необходимости распаковки во временную директорию.

Пошаговый пример: от скрипта к приложению

Руководство по - изображение номер тридцать два
Руководство по — изображение номер тридцать два

Давайте рассмотрим полный процесс на конкретном примере – создание EXE-файла для простого графического интерфейса на PyQt5.

Шаг 6: Тестирование

Проверьте файл dist/ на разных компьютерах, включая машины без установленного Python.

Защита исходного кода

Что такое обфускация кода - изображение номер тридцать четыре
Что такое обфускация кода — изображение номер тридцать четыре

Хотя конвертация в EXE не обеспечивает 100% защиту исходного кода, она значительно затрудняет его извлечение. Для дополнительной защиты:

Использование обфускации

Python-проект в - изображение номер тридцать пять
Python-проект в — изображение номер тридцать пять

Перед конвертацией обфусцируйте ваш код с помощью инструментов типа PyArmor:

Ваше путешествие от кода к приложению: следующие шаги

\ - изображение номер тридцать шесть
\ — изображение номер тридцать шесть

Поздравляю! Вы прошли путь от Python-скрипта до полноценного исполняемого файла. Что дальше?

  • Автоматизируйте процесс сборки – создайте скрипты для CI/CD, чтобы автоматически генерировать новые версии при обновлении кода
  • Реализуйте автообновление – добавьте в ваше приложение возможность проверять и устанавливать обновления
  • Создайте брендированный установщик – профессиональный установщик повышает доверие пользователей
  • Собирайте обратную связь – анализируйте опыт пользователей для дальнейших улучшений
  • Рассмотрите альтернативные подходы – для веб-приложений можно использовать Electron или Flask Frozen

Помните, что успех приложения зависит не только от технической реализации, но и от пользовательского опыта. Создание EXE-файла – лишь первый шаг в построении профессионального продукта на основе Python.

Какой инструмент для конвертации выбрать? Если вы новичок или цените простоту – начните с Auto-Py-to-Exe. Для более сложных проектов PyInstaller предлагает гибкость и мощь. Ищете максимальную производительность? Обратите внимание на Nuitka.

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

Можно ли создать EXE-файл на Linux или macOS для запуска в Windows?

Как запустить exe на - изображение номер тридцать семь
Как запустить exe на — изображение номер тридцать семь

Да, теоретически это возможно, но на практике могут возникнуть проблемы совместимости. PyInstaller рекомендует создавать Windows-исполняемые файлы на Windows, Linux-исполняемые на Linux и так далее. Существуют решения с использованием виртуальных машин или Wine, но это может привести к непредсказуемым результатам. Лучший подход – использовать для сборки ту же операционную систему, для которой предназначен финальный EXE.

Как включить базу данных SQLite в EXE-файл?

Sqlite - изображение номер тридцать восемь
Sqlite — изображение номер тридцать восемь

Для включения SQLite-базы данных в ваш EXE используйте параметр —add-data в PyInstaller. Например: pyinstaller —onefile —add-data «;.». В коде приложения используйте функцию resource_path() (показана выше в статье) для корректного доступа к файлу базы данных как в режиме разработки, так и в упакованном EXE. Помните, что в режиме —onefile база данных будет распакована во временную директорию при каждом запуске, поэтому для приложений с изменяемыми данными лучше хранить базу отдельно от EXE.

Почему мой EXE-файл запускается на моем компьютере, но не работает на других?

Это частая проблема, вызванная несколькими факторами. Наиболее распространенные причины: отсутствие необходимых DLL (особенно Microsoft Visual C++ Redistributable), динамически загружаемые модули, не обнаруженные автоматически, или несовместимость версий Windows. Для решения: 1. Используйте инструмент dependency walker для выявления отсутствующих DLL; 2. Добавьте явно все скрытые импорты;3. Тестируйте на «чистой» виртуальной машине; 4. Рассмотрите возможность создания установщика, который будет включать все необходимые компоненты.

Часто задаваемые вопросы о создании EXE из Python

Вопрос: Какой инструмент лучше всего подходит для создания EXE-файла из Python?
Ответ: PyInstaller считается самым популярным и универсальным инструментом, поддерживающим большинство библиотек и платформ.

Вопрос: Можно ли создать один EXE-файл для всех версий Windows?
Ответ: Да, PyInstaller позволяет создать один исполняемый файл, который будет работать на Windows 7, 8, 10 и 11.

Вопрос: Как уменьшить размер EXE-файла?
Ответ: Используйте виртуальное окружение, исключайте ненужные модули и применяйте UPX-сжатие.

Вопрос: Почему антивирус блокирует мой EXE-файл?
Ответ: Это ложное срабатывание. Подпишите файл цифровой подписью или добавьте его в исключения антивируса.

Вопрос: Можно ли создать EXE-файл на Mac для Windows?
Ответ: Да, используя кросс-компиляцию или Docker с образом Windows.

Вопрос: Как включить базу данных SQLite в EXE-файл?
Ответ: Добавьте файл базы данных в секцию —add-data в PyInstaller.

Вопрос: Что делать, если EXE-файл не запускается на других компьютерах?
Ответ: Проверьте версию Python, установите все зависимости и используйте флаг —onefile.

Вопрос: Можно ли защитить исходный код Python в EXE?
Ответ: Да, используйте обфускацию кода с помощью PyArmor или других инструментов.

Вопрос: Как добавить иконку в EXE-файл?
Ответ: Используйте параметр —icon=icon.ico в PyInstaller.

Вопрос: Поддерживает ли PyInstaller графические интерфейсы?
Ответ: Да, PyInstaller отлично работает с Tkinter, PyQt, Kivy и другими GUI-фреймворками.