Pyinstaller как пользоваться linux

Обновлено: 04.07.2024

Эй, ребята! В этом руководстве мы узнаем цель и основы Python Pyinstaller. Итак, давайте начнем!

Эй, ребята! В этом руководстве мы узнаем цель и основы Python Pyinstaller Отказ Итак, давайте начнем!

Что такое Pyinstaller?

Нам не нужно устанавливать разные пакеты или модули для различных приложений.

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

Он используется для создания файлов .exe для Windows, файлов .App для Mac и распределяемых пакетов для Linux.

Как установить Pyinstaller?

Мы можем скачать Pyinstaller из Pypi. Мы можем установить его, используя диспетчер пакетов PIP Package.

Рекомендуется создать виртуальную среду и установить там Pyinstaller.

Введите следующую команду в командной строке Windows

Теперь установите текущий каталог на местонахождение вашей программы Program.py Отказ

Запустите код, приведенный ниже. Здесь Program.py это название нашего данного сценария Python.

Pyinstaller анализирует наш код и делает следующее

  1. Создает Программа.spec Файл, который содержит информацию о файлах, которые должны быть упакованы.
  2. Создана папка сборки, которая содержит некоторые файлы журнала и рабочие файлы.
  3. Папка с именем Dist Также будет создано, в котором содержится .exe Файл с тем же именем, что и данный именем сценария Python.

Теперь есть 3 важных элемента использования Pyinstaller:

  • Файл .spec
  • Папка сборки
  • Dist папка

Что такое спецификация?

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

  1. Чтобы объединить наши файлы данных с приложением.
  2. Включить библиотеки времени выполнения, которые неизвестны Pyinstaller.
  3. Чтобы добавить варианты времени выполнения Python в исполняемый файл.
  4. Создать многопрограммурный пакет с объединенными общими модулями.

Чтобы создать SPEC-файл, запустите эту команду

Эта команда создает Program.py SPEC файл. Для создания приложения мы передаем файл SPEC в команду Pyinstaller:

Что такое папка сборки?

Папка сборки хранит метаданные и полезно для Отладка Отказ

Build/Program/Warn-Program.txt Файл в построить/ Папка содержит много выходов, чтобы лучше понять вещи.

Чтобы просмотреть вывод, восстановить исполняемый файл --Log-Level = Debug вариант. Рекомендуется сохранить этот вывод, чтобы обратиться к позже. Мы можем сделать это

Какая папка Dist?

Папка Dist содержит требования и исполняемые файлы для приложения. Он содержит файл .exe с тем же именем, что и наш скрипт.

Исполняемый для бега есть Dist/Program/Program.exe на окнах.

Что такое импортеррар?

Если Pyinstaller не может определить все зависимости правильно, ImportError Ошибка видна. Это происходит, когда мы используем __import __ () Отказ Импорт внутри функций или скрытых импорта.

Чтобы разрешить это мы используем, --hidden-import Отказ Эта команда включает в себя пакеты и модули автоматически.

Другой способ использует файлы крючков, которые содержат дополнительную информацию, которая помогает Pyinstaller Package UP в зависимости.

Как изменить имя нашего исполняемого файла с помощью Pyinstaller?

Чтобы избежать нашего спецификации, сборка и исполняемого файла имена как нашего имени сценариев Python, мы можем использовать -Нам команда.

Как создать один исполняемый файл?

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

Чтобы создать только один исполняемый файл вашего сценария Python, запустите код, приведенный ниже-

Тестирование нашего исполняемого исполнения

Мы всегда должны проверять наш исполняемый файл в новой машине без какой-либо среды развития, как Виртуал , Кондей И т. Д. В качестве основной цели исполняемого исполнителя Pyinstaller заключается в том, что пользователь не должен потребовать какую-либо вещь, установленную на их системе.

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

Это потому, что «ImportLib_Resources» требует version.txt файл. Мы можем добавить этот файл по команде, приведенной ниже.

Это будет включать version.txt Файл в новой папке в ImportLib_Resources папка.

Заключение

В этой статье мы узнали, как установить Pyinstaller, Run, Debug и проверить наш исполняемый файл. Ждите продолжения!

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

По прочтении обсуждений в разных местах, пришел к выводу, что PyInstaller лучше всего подходит для данных целей из-за простоты в использовании, своей кросс-платформенности и потому, что собранный им exe-файл легче переносится с одной версии Windows на другую. А так же позволяет без особых танцев собирать бинарники для Windows из-под других операционных систем.

Подготовка

  • Python2 — К сожалению PyInstaller работает только для Python-2.x.x
  • Сам Pyinstaller

Я тестировал кросс-сборку на Ubuntu 11.04 с Python 2.7.1 и Wine 1.3.20.

Ставим все необходимое:

Настройка и запуск

Теперь необходимо настроить Pyinstaller с помощью скрипта Configure.py. Конфигурацию надо производить каждый раз когда меняется конфигурация Python, поэтому имеет смысл держать отдельную версию Pyinstaller для каждой версии Python. Сконфигурируем Pyinstaller под Windows-версию интерпретатора:

cd pyinstaller-1.5
wine

Теперь можно собирать exe-файл. Сначала создаем spec-файл, в котором содержаться настройки упаковки проекта. Для наглядности назовем упаковываемый файл test.py (в случае, когда в проекте не один файл, указываем путь к главному).

/.wine/drive_c/Python27.exe Makespec.py test.py

По умолчанию папка со spec-фалом будет создана в папке Pyinstaller и будет иметь имя упаковываемого файла без расширения (в нашем случае test).

  • --onefile — по умолчанию PyInstaller создает exe-файл и кладет в папку рядом с ним необходимые dll. Этот ключ форсирует упаковку всего в единый бинарник.
  • --out=DIR — позволяет задать определенную папку для spec-файла
  • --windowed — под Windows отключает консоль приложения

/.wine/drive_c/Python27/python.exe Build.py test/test.spec

Упакованное приложение можно найти в папке dist/ внутри папки со spec-файлом.

За сим все. Тестовая программа заработала под Wine, а затем под Windows XP и Windows 7 без малейших писков.

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

В этом уроке вы узнаете:

  • Как PyInstaller может упростить распространение приложений
  • Как использовать PyInstaller в ваших собственных проектах
  • Как отлаживать ошибки PyInstaller
  • Что PyInstaller не может

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

Содержание

Проблемы распространения ↑

Настройка проекта Python может быть неприятной, особенно для не разработчиков. Часто установка начинается с открытия Терминала, который не запускается для огромной группы потенциальных пользователей. Это препятствие останавливает пользователей еще до того, как руководство по установке углубится в сложные детали виртуальных сред, версий Python и т.д. и множество потенциальных зависимостей.

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

  • Загрузите и установите нужную версию Python;
  • Настроить менеджер зависимостей;
  • Настроить виртуальную среду;
  • Получить копию своего кода;
  • Установить зависимости.

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

Эти проблемы взорвутся, если вашему пользователю посчастливится добраться до части установки, связанной с зависимостями. Это стало намного лучше за последние несколько лет с преобладанием колес, но для некоторых зависимостей по-прежнему требуются компиляторы C/C++ или даже FORTRAN!

PyInstaller ↑

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

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

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

Кроме того, PyInstaller может создавать исполняемые файлы для Windows, Linux или macOS. Это означает, что пользователи Windows получат .exe, пользователи Linux получат обычный исполняемый файл, а пользователи macOS получат пакет .app. На этот счет есть некоторые предостережения. См. Раздел ограничений для получения дополнительной информации.

Подготовка проекта ↑

PyInstaller требует, чтобы ваше приложение соответствовало некоторой минимальной структуре, а именно, чтобы у вас был сценарий CLI для запуска вашего приложения. Часто это означает создание небольшого скрипта вне вашего пакета Python, который просто импортирует ваш пакет и запускает main().

Вы можете попробовать это в своем собственном проекте или попробовать на проекте чтения каналов Real Python. Для получения более подробной информации о проекте для чтения ознакомьтесь с руководством по публикации пакета на PyPI.

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

Этот скрипт cli.py вызывает main() для запуска программы чтения каналов.

Создать этот сценарий точки входа несложно, когда вы работаете над собственным проектом, потому что вы знакомы с кодом. Однако найти точку входа в чужой код не так просто. В этом случае вы можете начать с просмотра файла setup.py в третьем -партийный проект.

Найдите ссылку на аргумент entry_points в файле setup.py проекта. Например, вот проект для чтения setup.py:

Как видите, сценарий cli.py точки входа вызывает ту же функцию, что и аргумент entry_points.

После этого изменения каталог проекта ридера должен выглядеть так, если вы извлекли его из папки с именем reader:

Обратите внимание, что сам код считывателя не изменился, только новый файл с именем cli.py. Этот сценарий точки входа обычно является всем, что необходимо для использования вашего проекта с PyInstaller.

Однако вам также стоит обратить внимание на использование __import__() или импорта внутри функций. В терминологии PyInstaller они называются скрытым импортом. Вы можете вручную указать скрытый импорт, чтобы PyInstaller включил эти зависимости, если изменение импорта в вашем приложении слишком сложно. Вы увидите, как это сделать позже в этом руководстве.

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

Использование PyInstaller ↑

pip установит зависимости PyInstaller вместе с новой командой: pyinstaller. PyInstaller можно импортировать в код Python и использовать в качестве библиотеки, но вы, скорее всего, будете использовать его только как инструмент командной строки.

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

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

PyInstaller поддерживает множество популярных пакетов, таких как NumPy, PyQt и Matplotlib, без каких-либо дополнительных действий с вашей стороны. Вы можете узнать больше о списке пакетов, которые PyInstaller официально поддерживает, обратившись к документации PyInstaller.

Не беспокойтесь, если некоторые из ваших зависимостей не указаны в официальной документации. Многие пакеты Python работают нормально. Фактически, PyInstaller достаточно популярен, поэтому во многих проектах есть объяснения, как заставить вещи работать с PyInstaller.

Одним словом, шансы на то, что ваш проект сработает «из коробки», высоки.

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

Например, введите следующее после того, как вы cd в каталог программы чтения верхнего уровня, если вы подписаны на проект вместе с проектом чтения каналов:

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

Копаемся в артефактах PyInstaller ↑

PyInstaller сложен внутри и при работе создаёт массу информации. Итак, важно знать, на чем сосредоточиться в первую очередь. А именно исполняемый файл, который вы можете распространять среди пользователей, и потенциальную отладочную информацию. По умолчанию команда pyinstaller создает несколько интересных моментов:

  • Файл спецификации *.spec
  • Папка сборки Build
  • Папка дистрибутива Dist

Файл спецификаций ↑

По умолчанию файл спецификации будет назван в честь вашего сценария командной строки. Продолжая наш предыдущий пример, вы увидите файл с именем cli.spec. Вот как выглядит файл спецификации по умолчанию после запуска PyInstaller в файле cli.py:

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

Не волнуйтесь, вам не нужно понимать приведенный выше код, чтобы эффективно использовать PyInstaller!

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

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

Папка сборки Build ↑

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

Папка Dist ↑

После сборки вы получите папку dist, подобную следующей:

Вы также найдете множество файлов с расширениями .so, .pyd и .dll в зависимости от вашей операционной системы. Это общие библиотеки, которые представляют зависимости вашего проекта, которые PyInstaller создал и собрал.

Примечание. Вы можете добавить *.spec, build и dist в свой файл .gitignore, чтобы сохранить статус git в чистоте, если вы используете git для контроля версий. Файл gitignore GitHub по умолчанию для проектов Python уже делает это за вас.

Вы захотите распространить всю папку dist/cli, но вы можете переименовать cli во все, что вам подходит.

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

Настройка ваших сборок ↑

У PyInstaller есть множество параметров, которые могут быть предоставлены в виде файлов спецификаций или обычных параметров интерфейса командной строки (CLI). Ниже вы найдете некоторые из наиболее распространенных и полезных настроек.

Вы можете создать исполняемый файл под названием realpython из cli.py скрипт с такой командой:

Эта опция не требует аргументов. Чтобы объединить свой проект в один файл, вы можете выполнить сборку с помощью такой команды:

С помощью приведенной выше команды ваша папка dist/ будет содержать только один исполняемый файл вместо папки со всеми зависимостями в отдельных файлах.

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

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

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

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

-w — избегайте автоматического открытия окна консоли для ведения журнала стандартного вывода

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

.spec файл

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

Тестирование нового исполняемого файла ↑

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

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

Эта команда указывает PyInstaller включить файл version.txt в папку importlib_resources в новую папку в вашей сборке с именем importlib_resources.

Примечание. В командах pyinstaller используется символ \, чтобы упростить чтение команды. Вы можете опустить \ при выполнении команд самостоятельно или скопировать и вставить команды как-ниже при условии, что вы используете те же пути.

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

Теперь запуск нового исполняемого файла приведет к новой ошибке, связанной с файлом config.cfg.

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

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

На этом этапе у вас должен быть рабочий исполняемый файл, который можно передавать напрямую пользователям!

Отладка исполняемых файлов PyInstaller ↑

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

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

Используйте терминал ↑

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

Не забудьте удалить флаг -w build, чтобы увидеть весь стандартный вывод в окне консоли. Часто вы увидите исключения ImportError, если зависимость отсутствует.

Файлы отладки ↑

Сборки одного каталога ↑

Дополнительные параметры интерфейса командной строки ↑

Вот пример того, как может выглядеть ваш файл build.txt:

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

Примечание: -y и -Параметры clean полезны при перестройке, особенно при первоначальной настройке сборок или при сборке с непрерывной интеграцией. Эти параметры удаляют старые сборки и исключают необходимость ввода данных пользователем в процессе сборки.

Дополнительные документы PyInstaller ↑

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

Помощь в обнаружении зависимостей ↑

Ограничения ↑

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

Например,если вы хотите нацелиться на широкий спектр машин Linux, вы можете использовать более старую версию CentOS. Это обеспечит совместимость с большинством версий новее, чем та, на которой вы построили. Это та же стратегия, которая описана в PEP 0513, и это то, что PyPA рекомендует для создания совместимых колес.

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

Заключение ↑

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

  1. Создайте сценарий точки входа, который вызывает вашу основную функцию.
  2. Установите PyInstaller.
  3. Запустите PyInstaller на своей точке входа.
  4. Протестируйте свой новый исполняемый файл.
  5. Отправьте полученную папку dist/ пользователям.

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

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

1, с иконками, генерируйте файл, выключите консоль

2, генерируют файл, выключите консоль

параметр эффект
-F, onefile Создайте файл для развертывания (см. XXXXX).
-D, onedir Создайте каталог для развертывания (по умолчанию)
-K, tk Содержит TCL / TK во время развертывания
-a, ascii Не включает кодировку, со всеми кодировками на версии Python, которая поддерживает Unicode
-d, debug Исполняемый файл отладочной версии
-w, windowed,noconsole Используйте подсистему Windows, чтобы выполнить, когда программа запускается, командная строка не откроется, действительна только для Windows
-c, nowindowed,console Используйте подсистему консоли для выполнения (по умолчанию), действительными только для Windows
-s, strip Исполняемые файлы и общие библиотеки проходят через полосу. Обратите внимание, что полоса Cygwin часто делает обычную DLL Win32
-X, upx Если есть установка UPX для выполнения Configure.py, обнаружение будет сжать файл выполнения (DLL в системе Windows также будет видеть заметку)
-o DIR, out=DIR Указывает, что сгенерированный каталог файла SPEC не указан, и текущий каталог является корнем Pyinstaller, автоматически создает каталог для вывода (спецификации и исполняемый исполняемый файл исполняемого файла. Если нет указанного, текущий каталог не является корнем каталог Pyinstaller, будет выводиться в текущий каталог
-p DIR, path=DIR Установите путь импорта и используйте эффект PythonPath, аналогичный разделением пути (Windows использует сегмент, Linux использует сегментацию толстой кишки для уточнения нескольких каталогов. Несколько параметров P также могут использоваться для установки нескольких путей импорта.
–icon=<FILE.ICO> Добавление файла .ico на ресурс, который можно выполнить только для систем Windows
–icon=<FILE.EXE,N> Добавление nth значок File.exe на ресурс исполняемых действителей только для систем Windows
-v FILE,version=FILE Verfile действителен только для систем Windows в качестве версий ресурсов для исполняемых.
-n NAME,name=NAME Дополнительный элемент (сгенерированный спецификация) Имя, если первый скрипт пропускается как имя спецификации

1, отредактируйте файл QRC


  • 1 Сначала поставьте файл ресурса значка в папку, в которой находится проект.
  • 2 в том же каталоге (более поздние операции) Создайте TXT-файл Resource.txt Открытое редактирование
    Формат выглядит следующим образом:
  • 3 После сохранения изменяйте имя суффикса файла .QRC

2, QRC преобразован в PY-файл

1 Нажмите Shift в папке, в которой находится проект, щелкните правой кнопкой мыши всплывающее меню, открыть PowerShell


2 Введите команду pyrcc5 -o target Имя файла имени файла файла

Читайте также: