Python как сделать exe windows

Уровень сложностиПростой

Время на прочтение3 мин

Количество просмотров194K

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

Исполняемый файл — это файл, который может быть установлен или запущен на компьютере без использования дополнительного программного обеспечения или библиотек. Он имеет расширение .exe и обычно используется для программных приложений в Windows. Конвертируя свой сценарий Python в исполняемый файл, вы можете защитить свой код от изменения или кражи, облегчить другим людям использование вашей программы и сделать автоматическим выполнение задач.

В этой статье я покажу вам два простых метода конвертации файла Python в исполняемый файл с помощью PyInstaller и auto-py-to-exe. Это две популярные библиотеки Python, которые позволяют создавать автономные исполняемые файлы из скриптов Python. Для работы вам понадобится Python 3.6 или выше.

Способ 1: С помощью библиотеки PyInstaller:

Ссылка

PyInstaller — это библиотека Python, которая может анализировать ваш код и компоновать его с необходимыми модулями и библиотеками в один исполняемый файл. Она поддерживает множество платформ, включая Windows, Linux и Mac OS X. PyInstaller также может обрабатывать сложные случаи, такие как импорт файлов данных, скрытый импорт, приложения с графическим интерфейсом и т.д.

Чтобы использовать PyInstaller, вам нужно сначала установить его с помощью pip:

pip install pyinstaller

Затем вам нужно написать свой скрипт Python и сохранить его с расширением .py. В этом примере я буду использовать простой сценарий, который печатает «Hello World» и сохраняет его под именем hello.py:

print("Hello World")

Далее необходимо открыть командную строку и перейти в каталог, где находится ваш скрипт. Затем необходимо выполнить следующую команду:

pyinstaller hello.py

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

Если вы хотите создать однофайловый исполняемый файл, не требующий дополнительных файлов или папок, вы можете использовать ключ —onefile:

pyinstaller --onefile hello.py

В папке dist будет создан один файл hello.exe, содержащий все необходимые коды и ресурсы.

Если вы хотите скрыть окно консоли при запуске исполняемого файла, вы можете использовать опцию —noconsole:

pyinstaller --noconsole --onefile hello.py

Будет создан  исполняемый файл, работающий в фоновом режиме.

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

Способ 2: С помощью auto-py-to-exe:

Ссылка

auto-py-to-exe — это еще одна библиотека Python, которая может конвертировать скрипты Python в исполняемые файлы. Она основана на PyInstaller, но имеет графический интерфейс для пользователя (GUI), что делает ее более простой в работе. Вы можете просто выбрать свой скрипт, подобрать параметры и нажать кнопку, чтобы сгенерировать исполняемый файл.

Чтобы использовать auto-py-to-exe, вам нужно сначала установить его с помощью pip:

pip install auto-py-to-exe

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

auto-py-to-exe

Откроется окно, которое выглядит следующим образом:

Здесь вы можете выбрать свой скрипт, нажав на кнопку Browse рядом с Script Location. Вы также можете выбрать, хотите ли вы получить исполняемый файл в одном файле или в одной папке, выбрав One File или One Directory в разделе Output Options.

Вы также можете изменить другие настройки, такие как иконка, имя, окно консоли и т.д., перейдя на вкладку Advanced и изменив поля Additional Files или Window Based Options.

После того как вы закончите с настройками, нажмите на кнопку Convert .py to .exe в нижней части окна. Это запустит процесс преобразования и покажет результат на вкладке Консоль.

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

От редакции

28 августа начнется новый поток по языку программирования Python. На нем мы разберем: Библиотеки Python и решение конкретных задач DevOps; Правила эффективного и поддерживаемого кода; Принципы автоматизации: Docker, Gitlab, Prometheus, K8S и многое другое.

Узнать больше о потоке вы можете на нашем сайте: https://slurm.io/course-python-for-ops

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

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

На Windows исполняемые файлы имеют формат .exe. Для превращения Python-кода в этот формат существует несколько инструментов. В этой статье мы рассмотрим их и начнем с одного из самых популярных.

PyInstaller

Эта библиотека позволяет достаточно просто создавать исполняемые файлы из исходников. Но прежде чем использовать эту библиотеку, сначала нужно ее установить. Для установки этой и последующих библиотек применяется пакетный менеджер PIP, который берет библиотеки с сервиса PyPI. В современных версиях Python он устанавливается вместе с интерпретатором и сопутствующими компонентами. Так что если в системе уже установлена свежая версия Python, то устанавливать PIP не придется. Для установки PyInstaller нужно ввести в командной строке следующее:

pip install PyInstaller

После ввода нажимаем на клавишу Enter и дожидаемся окончания процесса установки. Для примера возьмем такую простенькую программу:

import random

name = input("Введите ваше имя: ")

list = ["Крепкого вам здоровья!", "Хорошего дня!", "Отличного вам настроения!", "Пусть этот день подарит вам только самые положительные эмоции", "Ты - лучший! Все получится, если захотеть!", "Хорошего настроя и добрых людей вокруг!", "Пусть солнце греет, если не снаружи, то внутри!", "Мир у твоих ног - дерзай, действуй!", "Хорошего утра и приятного дня! Ты один на миллион!", "Побольше сил, а еще бодрости и уверенности в себе!"]

print("Привет, ", name, "! ", random.choice(list), sep="")

Эта программа просит пользователя ввести его имя, а после ввода выводит приветствие в формате «Привет, <имя пользователя>!». К этому приветствию добавляется рандомная фраза-пожелание из списка list. Вот так это выглядит:

Введите ваше имя: Алексей
Привет, Алексей! Пусть солнце греет, если не снаружи, то внутри!

Сохраним исходный код нашего приложения под именем hello.py. Теперь откроем командную строку в той же папке, в которой находится наш исходник. В командной строке напишем:

pyinstaller --onefile hello.py

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

pyinstaller --onedir hello.py

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

pyinstaller hello.py

то в данном случае по умолчанию будет применена опция —onedir. 

Стоит отметить, что эта библиотека, как и некоторые другие, может создавать исполняемые файлы не только для операционной системы Windows. Если запустить вышеприведенные команды, например, на каком-нибудь дистрибутиве GNU/Linux, то исполняемые файлы будут создаваться именно под эту операционную систему.

py2exe

Еще одна библиотека, которая поможет преобразовать сценарий на Python в исполняемый exe-файл, называется py2exe. Для установки этой библиотеки нужно ввести такую команду:

pip install py2exe

Для примера возьмем ту же программу с выводом приветствия из прошлого раздела. Для запуска процесса конвертации при помощи py2exe нам потребуется создать файл конфигурации. Рядом с файлом hello.py создадим еще один файл с именем setup.py и с таким содержимым:

from distutils.core import setup
import py2exe

setup(console=['hello.py'])

Теперь можно приступать к конвертации. Откроем командную строку в той же директории, в которой находятся наши скрипты, и в ней напишем:

python setup.py py2exe

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

cx_Freeze

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

pip install cx_Freeze

После установки библиотеки для преобразования того же скрипта hello.py нам также потребуется конфигурационный файл. У нас уже есть один с именем setup.py, предназначенный для py2exe. Заменим его содержимое на это:

import sys
from cx_Freeze import setup, Executable

setup(
    name="Hello",
    version="1.0",
    description="Description of your program",
    executables=[Executable("hello.py")]
)

Далее можно переходить к преобразованию. Действуем примерно так же, как и в прошлом разделе, — открываем командную строку из папки со скриптами и пишем в ней следующее:

python setup.py build

После выполнения этой команды у нас появится папка с именем build, а в ней будет находиться наш исполняемый файл.

Nuitka

Эта библиотека транслирует исходный код на языке Python в код на языке C. Далее этот код преобразуется в исполняемые файлы. Таким образом, для запуска этих файлов не нужен установленный на компьютере пользователя интерпретатор Python. Установить эту библиотеку можно, введя в командной строке следующее:

pip install Nuitka

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

nuitka hello.py

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

nuitka --standalone hello.py

Будет создана папка dist, в которую Nuitka поместит все нужные зависимости. А если добавить опцию —onefile:

nuitka --onefile hello.py

то получится один файл, способный работать автономно.

Auto Py to Exe

Этот инструмент предоставляет для пользователя удобный графический интерфейс и использует PyInstaller для преобразования скрипта в exe-файл. Для установки командуем:

pip install auto-py-to-exe

После установки выполняем следующую команду:

auto-py-to-exe

Должно открыться такое окно:

Auto Py to Exe

Источник: автор статьи

Просто указываем путь к файлу со скриптом, отмечаем нужные чекбоксы, выбираем тип приложения (консольное или оконное) и что мы должны получить на выходе (упаковать все в одну папку или в один файл). Также можно указать иконку для приложения и различные дополнительные файлы. Этими файлами могут быть, например, какие-нибудь ресурсы в виде изображений или аудио- и видеофайлы. После всех приготовлений нажимаем на кнопку «Конвертировать .py в .exe».

Начнется процесс конвертации. В разделе «Вывод» будет отображен весь процесс превращения исходника в исполняемый файл. По окончании процесса преобразования в том же каталоге, где находится исходник, будет создана папка Output, в которой мы найдем наш исполняемый файл. Кстати говоря, эту папку можно открыть прямо из интерфейса программы Auto Py to Exe. После завершения конвертации под разделом «Вывод» появится кнопка «Открыть папку вывода».

Py2exe-GUI

Еще один графический инструмент для создания исполняемых файлов из исходников на Python. Так же как и в Auto Py to Exe, здесь используется PyInstaller для преобразования файлов. Для установки нужно скомандовать:

pip install py2exe-gui

Для запуска программы вводим следующую команду:

py2exe-gui

Перед нами должно появиться такое окно:

Источник: автор статьи

Так же как и в случае с Auto Py to Exe, здесь нужно указать расположение скрипта и что желаем получить на выходе (папку или файл). Можно указать версию Python, которую следует использовать при конвертации. Дополнительно есть возможность подключить какие-либо файлы данных или бинарные файлы, если они необходимы для работы приложения. В результате мы получим папку dist, в которой будет содержаться исполняемый файл.

Подведем итог

EXE-файл — это исполняемый файл, который можно запускать на устройствах с Windows без установки Python. Конвертация кода в EXE помогает делиться программами с другими пользователями в удобном виде.

Мы разобрали шесть инструментов для создания EXE-файлов из Python-кода:

  • PyInstaller и Auto Py to Exe — простые и удобные для начинающих.
  • Py2exe и Py2exe-GUI — подойдут для Windows-проектов.
  • Nuitka — мощный инструмент для оптимизации и повышения производительности.
  • cx_Freeze — гибкий вариант для кроссплатформенных приложений.

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

C помощью Python можно автоматизировать многие задачи — достаточно написать скрипт и запустить его на терминале. Python — самый быстрый и простой язык сценариев. Если вы не хотите каждый день открывать терминал и запускать одну и ту же команду, можно создать исполняемый файл. Создать exe-файл в Python можно с помощью PyInstaller и других библиотек.

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

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

Установка PyInstaller 

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

C:\> pip install pyinstaller

Это поможет обновить PyInstaller до последней версии:

C:\> pip install —upgrade pyinstaller

Установка текущей версии разработки:

C:\> pip install https://github.com/pyinstaller/pyinstaller/tarball/

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

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

1.Создайте файл с именем example.py: 

import os

from jpype import *

__cells_jar_dir__ = os.path.dirname(__file__)

addClassPath(os.path.join(__cells_jar_dir__, "aspose-cells-23.1.jar"))

addClassPath(os.path.join(__cells_jar_dir__, "bcprov-jdk15on-160.jar"))

addClassPath(os.path.join(__cells_jar_dir__, "bcpkix-jdk15on-1.60.jar"))

addClassPath(os.path.join(__cells_jar_dir__, "JavaClassBridge.jar"))

import jpype

import asposecells

jpype.startJVM()

from asposecells.api import Workbook, FileFormatType, CellsHelper

print(CellsHelper.getVersion())

workbook = Workbook(FileFormatType.XLSX)

workbook.getWorksheets().get(0).getCells().get("A1").putValue("Hello World")

workbook.save("output.xlsx")

jpype.shutdownJVM()

py

2.Создайте папку c:\app и копию example.py c:\app.

3. Откройте командную строку и выполните команду example.py pyinstaller 

C:\app> pyinstaller example.py

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

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

6. Запустите pyinstaller example.spec в окне командной строки.

C:\app> pyinstaller example.spec

7. Переключите каталог на C:\app\dist\example, и вы найдете файл example.exe.

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

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

Установка auto-py-to-exe 

  1. Откройте командную строку, выполнив поиск CMD.
  2. Используйте pip-менеджер пакетов Python для установки auto-py-to-exe:

pip install auto-py-to-exe

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

  1. Откройте командную строку, выполнив поиск CMD.
  2. Запустите auto-py-to-exe из командной строки.
  3. Нажмите на кнопку Browse и перейдите к нашему примеру файла на Python.
  4. Настройте приложение на использование одного файла. Это позволит объединить приложение и поддерживающие его библиотеки Python в один исполняемый файл.
  5. Настройте приложение на консольное управление. Так можно увидеть все ошибки, выводимые в командную строку. Как только мы будем уверены, что приложение работает правильно, можно настроить его на оконное управление.
  6. Нажмите на раскрывающийся список параметров и выберите значок для вашего приложения. Это необязательный шаг, но он повышает качество приложения. 
  7. Нажмите «Дополнительно», ‎в поле «Имя» ‎введите название вашего приложения. Например, «Программа запуска приложений».
  8. Прокрутите страницу вниз и нажмите «Преобразовать. PY в .EXE»‎, чтобы начать процесс. Это займет пару минут.
  9. Нажмите на кнопку Open Output Folder, чтобы открыть папку, содержащую приложение.
  10. Дважды щелкните по значку, чтобы запустить приложение.

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

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

Установка cx_Freeze 

Установить его легко с помощью pip:

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

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

from cx_Freeze import setup, Executable

   setup(

       name="YourAppName",

       version="1.0",

       description="Your application description",

       executables=[Executable("your_script.py")],

   )   

py

Замените «YourAppName» и «Your application description» на название и описание вашего приложения, а «your_script.py» — на название вашего скрипта на Python.

Откройте терминал, перейдите в каталог, содержащий ваш скрипт на Python и файл «setup.py»:

python setup.py build

Это создаст каталог «build», содержащий исполняемый файл.

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

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

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

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

Установка py2exe 

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

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

Напишем программу, которая будет выводить текст на консоль:

import math

print("Hannibal ante Portas")

print(factorial(4))

py

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

$ mkdir exampDir

$ move example.py exampDir

$ cd exampDir

$ py example.py

py

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

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

from distutils.core import setup # Need this to handle modules

import py2exe 

import math # We have to import all modules used in our program

setup(console=['example.py']) # Calls setup function to indicate that we're dealing with a single console application

py

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

$ cd exampDir

$ python setup.py py2exe

running py2exe

*** searching for required modules ***

*** parsing results ***

Обычно код на Питон запускают двумя способами: через терминал или через текстовый редактор / IDE.

При этом стоит отметить, что файлик Python — это всего лишь скрипт, который сохранён в расширении .py. Да, это очевидно, но в этом и кроется проблема: иногда нужно скрыть исходный код, а поделиться программкой (в виде альфа-версии, например) очень хочется.

Одно из решений, которое закрывают боль с исходным кодом — это конвертация файла Python в исполняемый exe-файлик.

В этой статье мы научимся создавать «экзешники» при помощи, Pyinstaller, auto-py-to-exe и Py2exe — расскажем, как как скомпилировать python в EXE-файл.

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

  1. Код могут украсть. Об этом мы уже говорили выше. Куда проще достать исходный код непосредственно из py-файла, чем из скомпилированного приложение. Py-файл достаточно просто открыть!
  2. Хочется поделиться кодом с другими юзерами. Дело не только в том, что ваш код могут украсть. Зачастую код содержит зависимости, которыми должен владеть другой юзер перед запуском вашего Python-кода. Но что, если он вообще ничего не смыслит в программировании? Не заставишь ведь его сперва выучить программирование, чтобы оценить ваше новое суперприложение. Проще создать исполняемый файл.
  3. Исполняемый файл можно запускать автоматически, по расписанию. Этот пункт актуален, если вы решили написать утилиту для вашего ПК, и эта утилита должна запускаться либо в определенное время, либо вместе с запуском ОС.

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

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

			import pandas as pd
from pandas.api.types 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.isalpha():
        filename = str(filename)
 
    # Automated validation
    perform_validation(filename)
		

Вы не забыли скачать библиотеки по ссылке по введении? Сделайте это сейчас.

Вот структура файлов на GitHub:

			# Directory structure
|   AB_NYC_2019.csv
|  
+---auto_py_to_exe
|   |   requirements.txt
|   |   validation.py         
+---pyinstaller
    |   requirements.txt
    |   validation.py
		

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

Сохраните ваш код и скопируйте его в обе директории.

Что делать в Pyinstaller

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

Всё в порядке? Запускайте команду:

			pyinstaller --onefile validation.py
		

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

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

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

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

Запустите команду:

Команда запустит графический интерфейс.

Запускаем компилятор Auto-py-to-exe // DataCamp

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

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

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

До установки прописываем:

			>py -3.4 -m venv myenv
> myenv\Scripts\activate.bat
		

Устанавливаем:

Компиляция python в exe:

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

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

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

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

И всё — вы великолепны!

103К открытий151К показов

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

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

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

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

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

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

  • Решение распространенных проблем

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

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

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

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

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

  • Часто задаваемые вопросы

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

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

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

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

Девушка в очках сидит на диване с ноутбуком

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

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

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

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

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

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

Установка PyInstaller

Для начала установим PyInstaller через pip:

pip install pyinstaller

Убедитесь, что вы используете ту же версию Python, на которой разрабатывали ваше приложение.

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

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

pyinstaller ваш_скрипт.py

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

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

Для создания одиночного EXE-файла, содержащего все зависимости, используйте флаг —onefile:

pyinstaller --onefile ваш_скрипт.py

Чтобы убрать консольное окно (для графических приложений):

pyinstaller --onefile --windowed ваш_скрипт.py

Для добавления иконки к вашему приложению:

pyinstaller --onefile --windowed --icon=путь_к_иконке.ico ваш_скрипт.py

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

pyinstaller --onefile --windowed --hidden-import=pandas.plotting --hidden-import=matplotlib.backends.backend_tkagg ваш_скрипт.py

Важно знать о PyInstaller:

  • Параметр —onefile увеличивает время запуска, так как требуется распаковка архива во временную директорию
  • Некоторые антивирусы могут помечать созданные EXE-файлы как подозрительные
  • Файлы конфигурации и данных лучше хранить в отдельной папке, а не внутри EXE

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

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

Установка Auto-Py-to-Exe

pip install auto-py-to-exe

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

После установки просто введите в командной строке:

auto-py-to-exe

Откроется веб-интерфейс, где вы сможете:

  1. Выбрать скрипт для конвертации
  2. Настроить параметры (One-File/One-Directory, Console/Window based)
  3. Добавить иконку, файлы данных и другие ресурсы
  4. Указать дополнительные импорты и параметры

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

Диаграмма рейтинга инструментов для конвертации Python в EXE

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

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

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

Установка cx_Freeze

pip install cx_Freeze

Создание setup.py

В отличие от PyInstaller, cx_Freeze требует создания файла setup.py:

from cx_Freeze import setup, Executable

setup(
    name = "МоеПриложение",
    version = "0.1",
    description = "Описание приложения",
    executables = [Executable("ваш_скрипт.py", base="Win32GUI")]
)

Затем запустите:

python setup.py build

Результат будет находиться в директории build.

Мужчина в очках смотрит в ноутбук и улыбается

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

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

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

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

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

pyi-makespec --onefile ваш_скрипт.py

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

a = Analysis(['ваш_скрипт.py'],
             pathex=['C:\\Путь\\К\\Вашему\\Проекту'],
             binaries=[],
             datas=[],
             hiddenimports=['модуль1', 'модуль2'],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)

После редактирования запустите:

pyinstaller ваш_скрипт.spec

Добавление ресурсов

Для включения файлов данных или изображений в PyInstaller:

pyinstaller --add-data "ресурсы/*;./ресурсы" ваш_скрипт.py

В вашем коде пути к ресурсам нужно будет обрабатывать особым образом:

import os
import sys

def resource_path(relative_path):
    """ Получение абсолютного пути к ресурсу """
    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("ресурсы/изображение.png")

Решение распространенных проблем

Процесс конвертации не всегда идет гладко. Вот наиболее распространенные проблемы и их решения:

Модули не найдены

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

pyinstaller --hidden-import=отсутствующий_модуль ваш_скрипт.py

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

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

pyinstaller --onefile --exclude-module=модуль_для_исключения ваш_скрипт.py

Также можно использовать UPX для сжатия:

pyinstaller --onefile --upx-dir=/путь/к/upx ваш_скрипт.py

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

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

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

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

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

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

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

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

import sys
import time
from PyQt5.QtWidgets import QApplication, QSplashScreen
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap

app = QApplication(sys.argv)
splash = QSplashScreen(QPixmap("заставка.png"))
splash.show()
app.processEvents()

# Имитация загрузки
time.sleep(2)

# Основное окно
from main_window import MainWindow
window = MainWindow()
window.show()
splash.finish(window)
sys.exit(app.exec_())

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

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

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

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

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

Метод Время запуска Использование памяти Скорость выполнения
Исходный 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.

Исходный код (app.py)

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QLabel, QVBoxLayout, QWidget
from PyQt5.QtCore import Qt

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Пример приложения")
        self.setGeometry(100, 100, 300, 200)
        layout = QVBoxLayout()

        self.label = QLabel("Нажмите кнопку")
        self.label.setAlignment(Qt.AlignCenter)
        layout.addWidget(self.label)

        self.button = QPushButton("Нажми меня")
        self.button.clicked.connect(self.on_button_click)
        layout.addWidget(self.button)

        container = QWidget()
        container.setLayout(layout)
        self.setCentralWidget(container)

    def on_button_click(self):
        self.label.setText("Кнопка была нажата!")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

Шаг 1: Установка зависимостей

pip install PyQt5 pyinstaller

Шаг 2: Создание иконки

Создайте или загрузите файл icon.ico для вашего приложения.

Шаг 3: Создание спецификации PyInstaller

pyi-makespec --onefile --windowed --icon=icon.ico app.py

Шаг 4: Редактирование app.spec

Добавьте явно PyQt5:

a = Analysis(['app.py'],
             pathex=['C:\\Путь\\К\\Проекту'],
             binaries=[],
             datas=[],
             hiddenimports=['PyQt5.QtCore', 'PyQt5.QtGui', 'PyQt5.QtWidgets'],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)

Шаг 5: Сборка EXE

pyinstaller app.spec

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

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

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

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

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

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

pip install pyarmor
pyarmor obfuscate --output=dist app.py
cd dist
pyinstaller --onefile app.py

Шифрование критических данных

Не храните чувствительную информацию (пароли, ключи API) прямо в коде:

from cryptography.fernet import Fernet

def get_api_key():
    key = b'ВашКлючШифрования==' # Должен храниться безопасно
    f = Fernet(key)
    encrypted = b'ЗашифрованныйAPIКлюч'
    return f.decrypt(encrypted).decode()

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

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

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

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

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

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

Мужчина в круглых очках смотрит  в ноутбук

Часто задаваемые вопросы

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

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

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

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

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

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

Оцените статью






4.9

(47 оценок)

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Изоляция ядра windows 10 как влияет на производительность
  • Настройки электропитания ноутбука windows
  • Windows переместить окно стрелками
  • Как установить firefox на windows 10
  • Ftp сервер под windows