Когда я закончил работу над скриптом для распознавания текста то столкнулся с неожиданной проблемой. Дело в том что компьютер на котором его планировалось запускать работает под управлением ОС Windows и у оператора нет возможности установить python и необходимые библиотеки. Я столкнулся с таким препятствием впервые так как раньше мои скрипты применялись только на компьютерах с *nix системами, а там поставить все необходимое из репозитория не проблема. Решить вопрос я смог при помощи cx_Freeze. Свой опыт по его использованию я решил изложить в этом небольшом мануале.
Анамнез
cx_Freeze это набор скриптов и модулей для сборки поставки приложения из python скриптов. Является прямым конкурентом py2exe и py2app в отличии от них является кросс-платформенным и потенциально способен работать на любой платформе на которой работает сам python.
Фреймворк опубликован под лицензией PSF.
Рецепт
Первое что вам потребуется сделать - установить пакет cx_Freez. Проще всего это можно сделать при помощи pip.
После этого, в папке скрипта который должен быть собран, необходимо создать скрипт сценария сборки. По конвенции он может иметь любое имя, я же назвал свой "setup.py". Ниже приведен пример скрипта сборки для проекта Dummy OCR:
Параметры компиляции могут быть установлены как атрибуты конструктора объекта Executable. Также некоторые из них можно передать через словарь из параметров (в примере build_exe_options). Ниже рассмотрены основные опции компиляции приложения и описание:
После создания сборочного скрипта вам достаточно запустить его передав необходимую команду. К примеру:
Каждая из этих команд может быть сконфигурированна своим набором параметров. Ознакомится с ними можно на официальном сайте.
Почему не py2exe
Py2exe был отличной утилитой но к сожалению не обновлялся с 2008-го года. Посему я решил попробовать нечто более актуальное. Хотя официальный туториал утверждает о наличии поддержки версий языка вплоть до 3.1.
Ссылки
Официальный сайт.
Репозиторий на BitBucket.
Анамнез
cx_Freeze это набор скриптов и модулей для сборки поставки приложения из python скриптов. Является прямым конкурентом py2exe и py2app в отличии от них является кросс-платформенным и потенциально способен работать на любой платформе на которой работает сам python.
Фреймворк опубликован под лицензией PSF.
Рецепт
Первое что вам потребуется сделать - установить пакет cx_Freez. Проще всего это можно сделать при помощи pip.
После этого, в папке скрипта который должен быть собран, необходимо создать скрипт сценария сборки. По конвенции он может иметь любое имя, я же назвал свой "setup.py". Ниже приведен пример скрипта сборки для проекта Dummy OCR:
Параметры компиляции могут быть установлены как атрибуты конструктора объекта Executable. Также некоторые из них можно передать через словарь из параметров (в примере build_exe_options). Ниже рассмотрены основные опции компиляции приложения и описание:
Название опции | Описание |
script | Имя файла скрипта. Нельзя передать через словарь параметров. |
initScript | Инициализирующий скрипт. Будет выполнятся перед выполнением основного скрипта. Как правило применяется для конфигурации окружения. Нельзя передать через словарь параметров. |
base | Тип приложения. По факту имя исполняемого файла-болванки для целевой платформы который будет использован. Можно задать свой но записав абсолютный путь, иначе путь следует указывать начиная от поддиректории cx_Freeze. Для Windows из коробки поддерживаются следующие варианты:
|
path | Список путей где будет проводится поиск. Нельзя передать через словарь параметров. |
targetDir | Имя директории с билдом. Нельзя передать через словарь параметров. |
targetName | Имя исполняемого файла. Нельзя передать через словарь параметров. |
includes | Список модулей включенных в компиляцию. |
excludes | Список модулей исключенных из компиляции. |
packages | Список пакетов включенных в компиляцию. |
replacePaths | Модифицирует имена файлов привязанных к объектам в коде при выводе в tracebacks. Принимает список кортежей состоящих из двух элементов "путь который следует найти" и "путь который следует заменить". При поиске по ‘*’ обработает директорию содержащую весь пакет за исключением относительного пути к модулю. |
compress | Флаг - сжимать байт-код модулей. |
copyDependentFiles | Флаг - копировать зависимые файлы в сборку. |
appendScriptToExe | Флаг - указывает на необходимость включить скрипт непосредственно в тело исполняемого файла. |
appendScriptToLibrary | Флаг - указывает на необходимость включить скрипт в архив библиотек сборки. |
icon | Имя файла-иконки который должен быть включен в исполняемый файл для Windows приложения, или помещен в директорию сборки для других платформ. |
namespacePackages | Список неймспейс-пакетов (их пути изменены при помощи pkgutil) |
shortcutName | Имя ярлыка исполняемого файла в случае включения в MSI-пакет. |
shortcutDir | Имя директории в которой будет расположен ярлык после установки MSI-пакета. |
После создания сборочного скрипта вам достаточно запустить его передав необходимую команду. К примеру:
python setup.py buildНа данный момент поддерживаются следующие команды:
Команда | Описание |
build, build_exe | Собрать проект. |
install, install_exe | Собрать набор exe-файлов. Применяется для установки Windows и RPM пакетов. |
bdist_msi | Создать MSI-пакет. |
bdist_rpm | Собрать RPM-пакет. |
bdist_mac | Собрать приложение для Mac OS (.app - директорию). |
bdist_dmg | Собрать DMG-образ диска для инсталляции на Mac OS. |
Каждая из этих команд может быть сконфигурированна своим набором параметров. Ознакомится с ними можно на официальном сайте.
Почему не py2exe
Py2exe был отличной утилитой но к сожалению не обновлялся с 2008-го года. Посему я решил попробовать нечто более актуальное. Хотя официальный туториал утверждает о наличии поддержки версий языка вплоть до 3.1.
Ссылки
Официальный сайт.
Репозиторий на BitBucket.
The best slot machines to play at casinos with no deposit - DrmCD
ОтветитьУдалитьFind out 경주 출장안마 how to get free spins, 김포 출장샵 no deposit bonuses, casino 논산 출장샵 games 안양 출장샵 & the best online slots. The best slot machines to play at casinos with no deposit required! 공주 출장마사지