Упаковываем программу на Python в .exe файл
Дата и время: 15 мая 2015 г. 23:37 | Категория: Программирование, Python
К сожалению не на всех компьютерах с ОС Windows по умолчанию установлен интерпретатор Python. Поэтому, чтобы ваша программа запустилась на любом компьютере, необходимо её упаковать в исполняемый .exe файл.
Для решения поставленной задачи существует несколько инструментов. Ранее был популярен инструмент py2exe, но в настоящий момент он не поддерживается и доступен только для второй версии Python.
1. Инструмент cx_Freeze
Таким образом, в данной статье будет описан успешный опыт использования инструмента cx_Freeze. Он актуален, поддерживает как Python 2, так и Python 3, и вообще, от его использования остались только положительные эмоции.
Допустим, что нужно упаковать в .exe программу на Python с графическим интерфейсом, например, написанном с использованием библиотеки tkinter, но вообще это не так важно. После установки инструмента, нужно просто создать скрипт для упаковки программы. Стоит отметить, что cx_Freeze позволяет создавать также установочные файлы, но данная возможность в этой статье рассматриваться не будет.
2. Скрипт для упаковки
Типичный скрип достаточно прост и имеет следующий вид (можно сохранить в командный файл .cmd или .bat, либо запустить из консоли):
python cxfreeze program.py --base-name Win32GUI --target-dir program -OO --icon=icon.ico
Данный скрипт написан с учётом того, что путь к python.exe прописан в Path. Всё достаточно очевидно. Вызывается скрипт cxfreeze, которому в качестве параметра передаётся только файл, содержащий точку входа в приложение (в данном случае program.py), всё остальное подтянется автоматически. Параметр --base-name Win32GUI указывает, что это приложение с графическим интерфейсом и благодаря этому не отображается консоль при работе программы. --target-dir указывает в какую папку поместить полученные файлы, -ОО - оптимизация, а --icon=icon.ico путь к иконке для приложения.
В результате выполнения скрипта будет получен файл program.exe и и ещё целая куча вместе с ним в указанной папке. Единственный минус, что программа может выйти сравнительно объёмной (раза в 4 больше, чем аналогичная на C++).
Чтобы упаковать консольную программу нужно просто убрать параметр --base-name Win32GUI. О дополнительных командах и возможностях можно узнать на официальном сайте cx_Freeze.
comments powered by Disqus