Как создать 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

  Что входит в подписку Окко. Что такое окко тv?

Нажав кнопку «Принять все файлы 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.

  Как переводить деньги с банковской карты в кошелек ЮMoney. Как перевести деньги на юмани

Если использовался параметр 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

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

      Как смотреть объявления на Авито до публикации. Как смотреть объявления на авито до публикации?
Оцените статью
Бизнес блог