PyInstaller — это модуль, используемый для объединения приложений python в один пакет вместе со всеми зависимостями. Затем пользователь может запустить приложение пакета без интерпретатора python или любых модулей. Он правильно связывает многие крупные пакеты, такие как numpy, Django, OpenCv и другие.
Некоторые важные моменты, которые следует помнить:
- Pyinstaller поддерживает Python 2.7 и Python 3.3+
- Pyinstaller был протестирован против Windows, Linux и Mac OS X.
- Это НЕ перекрестный компилятор. (Приложение Windows не может быть упаковано в Linux. Вы должны запустить PyInstaller в Windows, чтобы связать приложение для Windows)
Установка и настройка
Pyinstaller — обычный пакет python. Он может быть установлен с использованием pip:
pip install pyinstaller
Установка в Windows
Для Windows pywin32 или pypiwin32 является обязательным условием. Последний устанавливается автоматически, когда pyinstaller устанавливается с помощью pip.
[2023] How to DECOMPILE a Python Executable! | .EXE to .PY
Установка в Mac OS X
PyInstaller работает с Python 2.7 по умолчанию с текущей Mac OS X. Если будут использоваться более поздние версии Python или если будут использоваться какие-либо основные пакеты, такие как PyQT, Numpy, Matplotlib и т. Д., Рекомендуется установить их, используя либо MacPorts, либо Homebrew .
Установка из архива
Если пип недоступен, загрузите сжатый архив из PyPI .
Чтобы протестировать версию разработки, загрузите сжатый архив из раздела разработки страницы загрузки PyInstaller .
Разверните архив и найдите скрипт setup.py . Выполните python setup.py install с правами администратора для установки или обновления PyInstaller.
Проверка установки
Командная команда pyinstaller должна существовать на системном пути для всех платформ после успешной установки.
Проверьте его, набрав pyinstaller —version в командной строке. Это будет печатать текущую версию pyinstaller.
Использование Pyinstaller
В простейшем случае использования просто перейдите к каталогу, в котором находится ваш файл, и введите:
Pyinstaller анализирует файл и создает:
- Файл myfile.spec в том же каталоге, что и myfile.py
- Папка сборки в том же каталоге, что и myfile.py
- Папка dist в том же каталоге, что и myfile.py
- Файлы журналов в папке сборки
Вложенное приложение можно найти в папке dist
Опции
Существует несколько вариантов, которые можно использовать с pyinstaller. Полный список опций можно найти здесь .
После установки вашего приложения можно запустить, открыв ‘dist myfile myfile.exe’.
Объединение в одну папку
Когда PyInstaller используется без каких-либо параметров для myscript.py , выход по умолчанию представляет собой одну папку (называемую myscript ), содержащую исполняемый файл с именем myscript ( myscript.exe в окнах) вместе со всеми необходимыми зависимостями.
Приложение может быть распространено путем сжатия папки в zip-файл.
Как сделать exe из Python проекта
Режим One Folder может быть определенно определен с помощью опции -D или —onedir
pyinstaller myscript.py -D
Преимущества:
Одним из основных преимуществ объединения одной папки является то, что легче отлаживать проблемы. Если какие-либо модули не могут импортироваться, их можно проверить, проверив папку.
Еще одно преимущество ощущается во время обновлений. Если в коде несколько изменений, но используемые зависимости точно совпадают, дистрибуторы могут просто отправить исполняемый файл (который обычно меньше всей папки).
Недостатки
Единственным недостатком этого метода является то, что пользователи должны искать исполняемый файл из большого количества файлов.
Также пользователи могут удалять / изменять другие файлы, которые могут привести к тому, что приложение не сможет работать правильно.
Объединение в один файл
pyinstaller myscript.py -F
Параметры для создания одного файла: -F или —onefile . Это myscript.exe программу в один файл myscript.exe .
Исполняемый файл одного файла медленнее, чем пакет с одной папкой. Их также сложнее отлаживать.
Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow
- Начало работы с языком Python
- * args и ** kwargs
- ArcPy
- ChemPy — пакет python
- Conditionals
- ConfigParser
- ctypes
- Enum
- hashlib
- Heapq
- HTML-анализ
- ijson
- kivy — кроссплатформенная платформа Python для разработки NUI
- Loops
- Mutable vs Immutable (и Hashable) в Python
- Neo4j и Cypher используют Py2Neo
- os.path
- Pandas Transform: операции надготовкой по группам и конкатенация результатов
- pip: Менеджер пакетов PyPI
- PostgreSQL
- py.test
- pyaudio
- Pygame
- Pyglet
- PyInstaller — Распространение кода Python
- Python Anti-Patterns
- Python HTTP Server
- Python Lex-Yacc
- Python и Excel
- setup.py
- tempfile NamedTemporaryFile
- Tkinter
- Unicode
- URLLIB
- WebSockets
- Абстрактное синтаксическое дерево
- Абстрактные базовые классы (abc)
- Альтернативы для переключения оператора с других языков
- Асинхронный модуль
- аудио
- Безопасность и криптография
- Библиотека подпроцессов
- Булевы операторы
- Введение в RabbitMQ с использованием AMQPStorm
- Ввод, подмножество и вывод внешних файлов данных с использованием Pandas
- вдавливание
- Веб-скребок с Python
- Визуализация данных с помощью Python
- Виртуальная среда Python — virtualenv
- виртуальная среда с virtualenvwrapper
- Виртуальные среды
- Возведение
- Вывоз мусора
- Вызовите Python с C #
- Выполнение динамического кода с помощью `exec` и` eval`
- Генераторы
- граф-инструмент
- группа по()
- Дата и время
- Двоичные данные
- Декораторы
- дескриптор
- Джанго
- Доступ к атрибутам
- Доступ к базе данных
- Доступ к исходному коду и байт-коду Python
- Задавать
- Запись в CSV из строки или списка
- Заявление о прохождении
- Идиомы
- Импорт модулей
- Индексация и нарезка
- Инструмент 2to3
- Интерпретатор (консоль командной строки)
- Интерфейс шлюза веб-сервера (WSGI)
- Исключения
- Исключения из Содружества
- Использование модуля «pip»: диспетчер пакетов PyPI
- Использование петель внутри функций
- Итераторы и итераторы
- Классы
- Кодовые блоки, кадры выполнения и пространства имен
- колба
- Комментарии и документация
- Контекстные менеджеры («with» Statement)
- Копирование данных
- Кортеж
- логирование
- Манипулирование XML
- Массивы
- Математический модуль
- Метаклассы
- Многомерные массивы
- Многопоточность
- многопроцессорная обработка
- Модуль base64
- Модуль Deque
- Модуль dis
- Модуль Functools
- Модуль Itertools
- Модуль JSON
- Модуль os
- модуль pyautogui
- Модуль Sqlite3
- Модуль Webbrowser
- Модуль коллекций
- Модуль локали
- Модуль очереди
- Написание расширений
- начать с GZip
- Неизменяемые типы данных (int, float, str, кортеж и frozensets)
- Неофициальные реализации Python
- Несовместимость, перемещающаяся с Python 2 на Python 3
- Область переменных и привязка
- Общие проблемы
- Объекты недвижимости
- Операторский модуль
- Определение функций со списком аргументов
- Оптимизация производительности
- Оптическое распознавание символов
- Основные входные и выходные данные
- Основные проклятия с Python
- откладывать в долгий ящик
- отладка
- Параллельное вычисление
- Параллельность Python
- перегрузка
- Переопределение метода
- Перечисление списков
- Плагины и расширения
- Побитовые операторы
- Повышение пользовательских ошибок / исключений
- Подключение Python к SQL Server
- Подключение Secure Shell в Python
- Подкоманды CLI с точным выводом справки
- подсчет
- подушка
- поиск
- Полиморфизм
- Пользовательские методы
- Последовательная связь Python (pyserial)
- Построение графика с помощью Matplotlib
- Примеси
- Приоритет оператора
- Проверка наличия и разрешения пути
- Программирование IoT с использованием Python и малины PI
- Простые математические операторы
- профилирование
- Процессы и потоки
- Работа над глобальным блокировщиком перевода (GIL)
- Работа с ZIP-архивами
- Разбор аргументов командной строки
- развертывание
- Разница между модулем и пакетом
- Распаковка файлов
- распределение
- Регулярные выражения (регулярное выражение)
- Рекурсия
- Розетки
- Связанные списки
- Сериализация данных
- Сериализация данных сортировки
- Сеть Python
- системный
- Скорость программы Python
- Скрытые функции
- Сложная математика
- Случайный модуль
- События, отправленные сервером Python
- Создание виртуальной среды с помощью virtualenvwrapper в окнах
- Создание пакетов Python
- Создание службы Windows с использованием Python
- Сокеты и шифрование / расшифровка сообщений между клиентом и сервером
- Сообщение Python Requests
- Сортировка списка (выбор частей списков)
- Сортировка, минимальная и максимальная
- Специальная переменная __name__
- Список
- Список деструктурирования (ака упаковка и распаковка)
- Список рекомендаций
- Сравнения
- стек
- Стойкость к Python
- Строковые методы
- Строковые представления экземпляров класса: методы __str__ и __repr__
- Сходства в синтаксисе, Различия в значении: Python и JavaScript
- Тестирование устройства
- Тип подсказки
- Типы данных Python
- толковый словарь
- Узел узлового списка
- уменьшить
- Файлы и папки I / O
- Фильтр
- Форматирование даты
- Форматирование строк
- функции
- Функциональное программирование на Python
- Функция карты
- Функция печати
- Частичные функции
- Черепашья графика
- Чтение и запись CSV
- Шаблоны в python
- Шаблоны проектирования
- Юникод и байты
Источник: learntutorials.net
Как упаковать программу на python в exe
Рано или поздно перед Python программистом встает проблема распространения своего ПО на компьютерах без установленного интерпретатора Python. Наиболее рациональным способом при этом кажется упаковка кода в автономный бинарный файл. Для этого существует целый сомн фреймворков.
По прочтении обсуждений в разных местах, пришел к выводу, что PyInstaller лучше всего подходит для данных целей из-за простоты в использовании, своей кросс-платформенности и
потому, что собранный им exe-файл легче переносится с одной версии Windows на другую. А так же позволяет без особых танцев собирать бинарники для Windows из-под других операционных систем.
ПОДГОТОВКА
Нам понадобятся:
- Python2 — К сожалению PyInstaller работает только для Python-2.x.x
- Сам Pyinstaller
— ну без него тут никуда.
Я тестировал кросс-сборку на Ubuntu 11.04 с Python 2.7.1 и Wine 1.3.20.
Ставим все необходимое:
sudo apt-get install wine1.3-dev
wine msiexec /i python-2.7.1.msi
tar xvf pyinstaller-1.5.tar.bz2
wine pywin32.exe
wine pywin32-216.win32-py2.7.exe
НАСТРОЙКА И ЗАПУСК
Теперь необходимо настроить Pyinstaller с помощью скрипта Configure.py. Конфигурацию надо производить каждый раз когда меняется конфигурация Python, поэтому имеет смысл держать отдельную версию Pyinstaller для каждой версии Python. Сконфигурируем Pyinstaller под Windows-версию интерпретатора:
wine ~/.wine/drive_c/Python27.exe Configure.py
wine ~/.wine/drive_c/Python27/python.exe Configure.py
Теперь можно собирать exe-файл. Сначала создаем spec-файл, в котором содержаться настройки упаковки проекта. Для наглядности назовем упаковываемый файл test.py (в случае, когда в проекте не один файл, указываем путь к главному).
wine ~/.wine/drive_c/Python27.exe Makespec.py test.py
wine ~/.wine/drive_c/Python27/python.exe Makespec.py test.py
По умолчанию папка со spec-фалом будет создана в папке Pyinstaller и будет иметь имя упаковываемого файла без расширения (в нашем случае test).
- –onefile — по умолчанию PyInstaller создает exe-файл и кладет в папку рядом с ним необходимые dll. Этот ключ форсирует упаковку всего в единый бинарник.
- –out=DIR — позволяет задать определенную папку для spec-файла
- –windowed — под Windows отключает консоль приложения
И наконец финальный этап — построение:
wine ~/.wine/drive_c/Python27/python.exe Build.py test/test.spec
Упакованное приложение можно найти в папке dist/ внутри папки со spec-файлом.
~/PytExe/pyinstaller-1.5$ wine ~/.wine/drive_c/Python27/python.exe Makespec.py -F -X /home/gammi/Dropbox/Archive/WOT/UDP/server2.py
wine ~/.wine/drive_c/Python27/python.exe Build.py server2/server2.spec
Это всё из каталога ~/PytExe/pyinstaller-1.5$
Сборка будет валяться там же в одноимённой с программой папке
Источник: copysol.blogspot.com
Компилируем код Python в файл exe
Код, написанный на Python, позволяет решать много прикладных задач: автоматизация отчетности, алгоритмы поиска, анализа и пр. Однако не у всех потенциальных пользователей может быть установлен сам Python и тем более не все являются экспертами в программировании. Выручить может программа, которая будет отрабатывать написанный вами код без установки библиотек Python и необходимой оболочки. Одним из таких решений может быть компиляция кода Python а файл exe. Дальше простым языком мы постараемся объяснить, как его скомпилировать и какие есть нюансы.
Для начала Вам необходимо скачать компилятор pyinstaller, для чего вам понадобится команда:
pip install pyinstaller
Далее ваш код в формате .py необходимо разместить в системную папку Scripts.
Путь к этой папке обычно выглядит так:
Если Вы инсталлировали Python в другое место, соответственно ищите папку там.
Далее приступаем собственно к компиляции, для чего: выделяем путь к папке Scripts в окне браузера, вместо него набираем команду cmd и жмем Enter.
У Вас сразу будет указан верный путь к файлу:
В продолжение строки с директорией файла необходимо набрать команду: pyinstaller Report.py —onefile
Где Report.py – это имя вашего файла, — onefile – означает, что программа будет скомпилирована в единый файл.
Нажимаем Enter. Pyinstaller приступает к сборке программы.
В зависимости от размера кода и количества, используемых в нем библиотек, время сборки программы может занять 5-15 мин. Успешностью завершения будет являться следующее сообщение:
Готовый файл находим в папке dist.