Как создать exe файл для Python кода с помощью PyInstaller. Как сделать exe файл в python.

Первый вариант предоставляет красивый графический интерфейс пользователя (GUI), который позаботится обо всем, что необходимо для преобразования сценария Python в исполняемый файл.

Как скомпилировать python в exe файл без консоли

В этом руководстве показано, как использовать Py2Exe для преобразования сценария Python в исполняемый файл в Windows.

Вступление

Для выполнения сценариев Python существует множество предварительных условий, таких как установка Python, установка нескольких модулей, использование командной строки и т.д. Например, если вы запускаете файл .exe, все очень просто.

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

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

Наиболее популярным способом достижения этой цели является использование модуля py2exe. В этой статье мы кратко обсудим основы работы с py2exe и устраним некоторые распространенные проблемы. Для этого не требуется углубленного знания Python, но вам потребуется использовать Windows.

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

Установка py2exe

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

Преобразование скрипта Python в файл .exe

Давайте сначала напишем программу, которая печатает текст на консоли:

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

Это должно быть выведено:

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

Конфигурация и настройка

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

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

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

Быстрый скоросшиватель

Если вы все сделали правильно, должен быть создан подкаталог dist. В нем, в зависимости от программы, находятся различные файлы, одним из которых должен быть example.exe. Чтобы запустить его из консоли, выполните его:

И вас встретит наш латинский фрагмент, за которым следует значение 4!

Или вы можете дважды щелкнуть по нему, и он запустится на консоли.

Если вы хотите объединить все файлы, как bundle_files, так и сжатые, и установить для zipfile значение None, здесь:

И снова запустите команды, чтобы создать файл .exe.

Теперь ваши конечные пользователи могут запускать ваши сценарии на своих локальных компьютерах без каких-либо знаний или предварительных условий.

Диагностика

Ошибки при конвертировании .py файлов в .exe файлы встречаются довольно часто, поэтому мы перечислим некоторые распространенные ошибки и их решения.

Как собрать код python в exe без отображения консоли?

Как собрать код python в exe без отображения консоли?

  1. установите pininstaller: pip install pyinstaller
  2. Пишем команду pyinstalle r-F — w-i( для создания иконки в .exe) main.py, где main.py — Python-скрипт. Вот что означает каждый флаг: f — этот флаг отвечает за то, чтобы созданная папка dist, в которой будет храниться наш исполняемый файл, не содержала много ненужных файлов, модулей и т.д. -w — этот флаг необходим, если ваше приложение использует библиотеки GUI (tkinter, PyQt5 и т.д.). ), он блокирует создание консольного окна, если ваше приложение является консольным, вам не нужно использовать этот флаг. -i — этот флаг отвечает за установку иконки в наш исполняемый файл, после него нужно указать полный путь к иконке и ее имя. Например: D:\LayOut\icon.ico

В&#D:³ Files: D:³³; ещё ищете ответ? Посмотрите другие вопросы с метками python или задайте свой вопрос.

Дизайн сайта / логотип ©2021;Stack Exchange Inc; Пользовательский контент предоставляется по лицензии cc by-sa. rev 2021.11.26.40833

  СБП в ВТБ. Как подключить сбп в втб

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

Преобразуем проект на Python в исполняемый файл .EXE

Auto PY to EXE позволяет легко конвертировать файлы .py в файлы .exe. Это запустит программу Python как настольное приложение и позволит вам запускать приложение на других компьютерах без необходимости установки Python.

В этой статье объясняется, как преобразовать проект Python в исполняемый файл. Решение работает независимо от количества .py файлов в приложении. Обратите внимание, что Auto PY to EXE работает только с Python 3.5 или выше.

Что здесь интересного? Во-первых, некоторые компоненты не используются (например, ssl, pyqt3D и т.д.). Во-вторых, мы будем собирать наш exe на Linux (linux-64, если быть точным; в нашем случае нам не нужно указывать платформу перед каждым компонентом).

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

PyInstaller собирает приложение Python и все необходимые библиотеки в один пакет следующим образом:

  1. Считывает файл сценария.
  2. Он анализирует код для выявления любых зависимостей, которые необходимы для работы кода.
  3. Создает файл spec, содержащий имя скрипта, библиотеки зависимостей и все файлы, включая те, которые переданы PyInstaller.
  4. Он собирает копии всех библиотек и файлов вместе с активным интерпретатором Python.
  5. Создает папку BUILD в папке сценария и записывает журналы в BUILD вместе с рабочими файлами.
  6. Создает папку DIST в папке скрипта, если она еще не существует.
  7. Записывает все необходимые файлы вместе со скриптом либо в ту же папку, либо в один исполняемый файл.

Если при создании исполняемого файла вы используете параметр команды onedir ил и-D, все будет помещено в одну и ту же папку. Это поведение по умолчанию. Если вы используете параметр onefile ил и-F, все будет храниться в одном исполняемом файле.

Ниже приведен простой сценарий Python под названием simple.py, который содержит этот код.

Создайте один исполняемый файл. Введите в командную строку:

После установки появляются две папки, BUILD и DIST, и новый файл с расширением .spec. Файл spec имеет то же имя, что и файл сценария.

папки, BUILD и DIST, а также файл .spec

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

 исполняемый файл

Это происходит после выполнения файла.

Добавление файлов с данными

Открыв файл спецификации, вы также можете увидеть раздел datas, который указывает, что файл netflix_titles.csv скопирован в текущий каталог.

Запустите файл simple1.exe. Появляется консоль со следующим выводом: Всего фильмов: 7787 .

Добавление файлов с данными и параметр onefile

Если указано —onefile, PyInstaller извлекает все файлы из папки TEMP, запускает скрипт и удаляет TEMP. Если вы укажете onefile вместе с add-data, он считывает данные из папки. Путь к папке изменится на путь «_MEIxxxxx-folder».

Сценарий обновляется для чтения папки TEMP и файлов данных. Создайте exe-файл с помощью команд onefile и add-data.

После успешного создания в папке DIST появится файл simple1.exe.

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

Добавление файлов с данными и параметр onefile

Дополнительные импорты с помощью Hidden Imports

Исполняемый файл требует всех входных данных, которые необходимы сценарию Python. Иногда PyInstaller пропускает динамический импорт или импорт второго уровня и выдает ImportError: No module named ……

Чтобы исправить эту ошибку, укажите имя отсутствующей библиотеки в файле hidden-import.

Например, чтобы добавить библиотеку os, нужно написать следующее:

Файл spec

Файл spec — это первый файл, который PyInstaller создает для кодирования содержимого сценария Python вместе с параметрами, которые передаются при запуске.

PyInstaller читает содержимое файла для создания исполняемого файла и определяет все необходимое для этого.

Файл с расширением .spec по умолчанию хранится в текущем каталоге.

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

  • Компиляция в пакет с исполняемым файлом данных.
  • Включите другие исполняемые файлы: .dll или .so.
  • Используйте библиотеки для создания нескольких программ в одном пакете.

Например, есть скрипт simpleModel.py, который использует TensorFlow и выводит номер версии этой библиотеки.

Скомпилируйте модель с помощью PyInstaller:

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

Давайте устраним проблему, обновив файл спецификации. Одним из решений является создание файла спецификации.

Команда pyi-makespec создает стандартный файл spec, содержащий все параметры, которые могут быть указаны в командной строке. В текущем каталоге создается файл simpleModel.spec.

Поскольку был использован параметр —onefile, в файл будет включена только секция exe.

  Что такое стагфляция в экономике: признаки, причины и последствия. Что такое стагфляция в экономике простыми словами

Если использовался параметр default или onedir, то в дополнение к разделу exe будет раздел collect.

Вы можете открыть файл simpleModel.spec и добавить следующий текст для создания крючков.

Создайте крючки и добавьте их в раздел Скрытый импорт и данные.

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

Обычно пакеты Python используют обычные методы для импорта своих зависимостей, но в некоторых случаях, таких как TensorFlow, необходимо импортировать динамические библиотеки. Возможно, PyInstaller не нашел все библиотеки или их слишком много. В таком случае рекомендуется использовать утилиту импорта PyInstaller.utils.hooks и создать все подмодули для библиотеки.

Скомпилируйте модель после обновления файла simpleModel.spec.

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

Месторасположение. Опять же, мы не будем вдаваться в подробности, отдельные пути описаны здесь. Если вы следовали этой статье (составной sysroot находится здесь, рядом с main.pdy ), то вам не нужно ничего здесь менять.

Структура программы

В качестве примера возьмем проект со следующей структурой: main.py является «точкой входа» нашей программы, он вызывает mainwindow.py — допустим, он проектирует окно виджета и получает icon.png и mainwindow.ui из ресурсов, которые мы создали с помощью Qt Designer. Доступные зависимости, версии библиотек и другие необходимые вещи показываются по очереди:

Как упоминалось ранее, на этом этапе мы собираем все необходимые части, которые затем используются для создания исполняемого файла. Этот процесс осуществляется с помощью конфигурационного файла sysroot.json (в принципе, вы можете назвать этот файл как угодно и указать путь к нему). Он состоит из блоков, каждый из которых описывает, как собрать другой компонент (Python, Qt и т.д.). API pyqtdeploy позволяет вам написать свой собственный плагин, который управляет созданием библиотеки/модуля/чего угодно, что вам нужно, если это еще не реализовано разработчиками pyqtdeploy. Давайте рассмотрим типичные дополнения и их параметры (примеры из документации):

openssl (опционально) — позволяет собирать из исходников или использовать библиотеку, установленную в вашей системе (подробности). Компонент, описывающий это дополнение в файле sysroot.json, выглядит следующим образом:

Первое, что бросается в глаза, это синтаксис: arch1|arch2|. #Это означает, что мы можем выбрать, на какой платформе использовать этот плагин (ios, android, macos, win, linux), а на какой нет. Кроме того, этот синтаксис применяется и к параметрам внутри блока.

  • source (обязательный) — Имя исходного файла,
  • no_asm (не требуется) — отключить оптимизацию ассемблера. Если эта опция включена, nasm должен быть указан в PATH,
  • python_source (необязательно) — имя файла, содержащего патчи, необходимые для сборки OpenSSL на macOS для Python v3.6.4 и более ранних версий,

zlib (необязательно) — используется при сборке других компонентов (если не указано, предполагается, что используется компонент, установленный в системе) (подробности):

  • source (обязательный) — очевидно, имя исходного файла,
  • static_msvc_runtime (необязательно) — статическое связывание библиотек MSVC (Windows),

qt5 (обязательно) — понято здесь (подробности):

  • qt_dir (необязательно, если указан источник) — путь к папке с установленным Qt,
  • source (необязательно, если указан qt_dir) — имя исходного файла Qt,
  • edition (обязательный, если указан source) — один из 2 вариантов:
    • реклама,
    • Открытый источник,
    • openssl-linked — собран из исходного кода (подробности должны быть указаны в описании компонента openssl),
    • securetransport — использует SSL, как реализовано в Qt (который, в свою очередь, использует Secure Transport от Apple),
    • openssl-runtime — использует версию OpenSSL, установленную в системе,

    python (обязательно) — это тоже само собой разумеется (подробности):

    • build_host_from_source (обязательно) — true — собирать python для хоста из исходников, false — использовать установленный python (не поддерживается для win32),
    • build_target_from_source (required) — true — собирать Python для целевой платформы из исходников, false — использовать установленный Python (использование установленного Python поддерживается только на win32),
    • source (требуется при сборке Python из исходного текста) — имя исходного файла Python,
    • version (требуется, если используется установленный Python) — версия установленного Python,
    • dynamic_loading (необязательно) — true — включает поддержку динамической загрузки модулей расширения (на языке C),
    • host_installation_bin_dir (опционально) — путь к установленному Python, если он не создан из исходников (если не указан, то будет автоматически искаться в реестре на win, в PATH на других платформах),

    Собираем sysroot

    Давайте посмотрим на полученный sysroot.json для нашей программы:

    Что здесь интересного? Во-первых, некоторые компоненты не используются (например, ssl, pyqt3D и т.д.). Во-вторых, мы будем собирать наш exe на Linux (linux-64, если быть точным; в нашем случае нам не нужно указывать платформу перед каждым компонентом).

    Более того, в qt5 мы отключили как можно больше модулей и функций, которые не используются (те, о назначении которых я знаю хотя бы минимально). Из каталогов верхнего уровня был создан только QtBase. Первый уменьшает размер встроенного Qt и соответственно результирующего файла (у меня получается минус 5 Мб), но увеличивает время компиляции, второй — использование ccache (по крайней мере в Linux), что при повторных компиляциях уменьшает время ОЧЕНЬ значительно (у меня уменьшилось в 5 раз). Он не требует настройки, просто установите его с помощью apt install ccache .

    В pyqt5 вы собираете только модули QtCore, QtGui, QtWidgets.

    В python dynamic_loading включена, потому что мы хотим динамически включить расширение C позже.

    Прежде чем приступить к компиляции sysroot, не забудьте скачать все необходимые исходники: zlib, Qt5, Python, sip, PyQt5 и поместить их в папку с файлом sysroot.json (можно использовать и другой, тогда укажите путь к нему). Запустите сборку:

    У этой команды есть еще несколько опций, которые вы можете посмотреть здесь.

    Я настоятельно рекомендую использовать опцию —verbose, так как вы можете ожидать множество ошибок до успешного завершения сборки. Многие из этих проблем связаны с тем, что у вас не установлены пакеты разработки. Я не буду перечислять их здесь, поскольку они зависят от вашей конфигурации и платформы. Вам, вероятно, понадобится python3-dev, см. также здесь (особенно раздел требований). Но вы можете использовать уже установленные версии для Qt и Python (я не тестировал это, возможно, у этого есть свои подводные камни).

    И ешьте попкорн, потому что в зависимости от того, насколько мощный у вас компьютер, это может занять много времени.

    Создаем «проектный» файл (документация)

    Когда у вас есть все необходимое, выберите модули, которые вы хотите поместить в exe-файл. В pyqtdeploy есть удобная GUI-помощь. Запустите его (вы можете использовать любое имя файла .pdy):

    Application Source

    На первой вкладке вы найдете следующие настройки:

    • Имя — имя будущего exe-файла,
    • Файл главного скрипта (не требуется, если используется Entry Point) — скрипт, который будет использоваться для запуска приложения (в нашем случае main.py),
    • точка входа (не указывается, если используется основной файл скрипта) — точка входа для программы на основе setuptools,
    • sys.path — используется для указания дополнительных каталогов, zip-файлов и яиц (те самые яйца Python) для добавления в sys.path (я не использовал его, подробности об этой опции см. в документации),
    • Target Python version — Версия Python,
    • Версия PyQt — PyQt4 или PyQt5 (игнорируется, если вы мазохист и решили создать программу, не использующую PyQt с этим монстром),
    • Использование консоли — выберите, должно ли приложение использовать консоль (только для Windows). Это может быть полезно для отладки,
    • Пакет приложений — выберите, следует ли создавать приложение в виде пакета (только для macOS),
    • Каталог пакета приложения — содержит все файлы, составляющие вашу программу. Чтобы добавить их, нажмите кнопку Сканировать…. Папка со всеми «внутренностями» (src) находится отдельно от main.py. Выберите эту папку и отметьте галочками все файлы, которые вы хотите включить в конечный файл. Если у вас нет такого разделения (т.е. main.py находится внутри src ), снимите флажок с main.py (или аналогичного файла главного скрипта).

    Еще один момент: любой файл с расширением .py будет «заморожен» (будет сгенерирован байткод) — в некоторых случаях это может быть нежелательно.

    • Сканирование… — добавление файлов в каталог пакета приложений,
    • Удалить все — очистка каталога пакетов приложений,
    • Включить все — выбирает все файлы в каталоге пакета приложения,
    • Удалить все — отменяет выбор всех файлов в каталоге пакета приложения,
    • Исключения — шаблоны для исключения файлов из каталога пакета приложения. Дважды щелкните на пустой строке, чтобы добавить ее,

    Поскольку qmake участвует в создании, вы можете добавить дополнительные опции для него здесь (я не использовал его),

    PyQt Modules

    На этой вкладке мы выбираем все модули PyQt, которые мы хотим явно импортировать в нашу программу. Если они зависят от других модулей, они будут выбраны автоматически. В нашем случае мы использовали QtCore, QtGui, QtWidgets, uic; sip подбирается автоматически. Если вы планируете использовать уже предустановленный PyQt и не привязываете его статически к нашему исполняемому файлу, не назначайте ничего (этот сценарий не тестировался).

    Standard Library

    Стандартная библиотека. Мы следуем тому же подходу, что и в предыдущем разделе, только для стандартной библиотеки. Если вы явно импортировали модуль в свою программу, проверьте его. Если вам нужны другие модули (или сам интерпретатор), они будут выбраны автоматически (ячейки).

      Почему Рутуб не работает. Что с рутубом сейчас 2022.
Оцените статью
Бизнес блог