Как сделать exe файл в python 3
Почему тут должен быть именно список, и не достаточно одного экземпляра класса Executable будет описано чуть позже в разделе Сборка нескольких запускаемых файлов. Конструктор класса Executable может принимать достаточно большое количество параметров. Обязательным параметром является только имя запускаемого python-файла. Если ваша программа состоит из большого количества скриптов, то указывать нужно на тот файл, который запускал бы пользователь, если бы он запускал приложение из исходников. Но это еще не все. Мы видим, что часть модулей находится в архиве python Это может быть неприятно из эстетических соображений, если вы не хотите видеть лишние служебные файлы и папки в сборке. Но имейте в виду, что распаковка архива при работе программы тоже будет занимать время, поэтому запуск программы с заархивированными модулями будет медленнее. Насколько медленнее - надо измерять, возможно, скорость будет не заметна для пользователей скорее всего так и будет. Этот элемент словаря должен содержать список строк с именами модулей пакетов , которые нужно поместить в архив. В нашем случае скрипт сборки преобразуется к следующему виду Example Теперь сборка занимает всего лишь 3. Ну и, конечно, в этом примере было применено очень агрессивное исключение модулей, которые могут использоваться во многих других модулях. Все возможные параметры можно найти в документации , некоторые из этих параметров мы еще будем использовать в дальнейшем. По идее после запуска нового скрипта сборки с помощью команды. Тут нужно все тестировать. Это особенно неприятно для больших программ. Таким образом вы можете исключить модуль, который используется в редком случае, и из-за этого не сразу обнаружить ошибку. Давайте для начала исключим модули, которые нам явно не нужны. Полный размер сборки сейчас составляет 9. Сразу скажу, что этой возможностью надо пользоваться осторожно, особенно для больших программах. Python - язык с динамической типизацией и заранее нельзя сказать, какие модули понадобятся, а какие нет. Python - отличный язык программирования для широкого круга задач, начиная от автоматизации рутинных действий до создания web- или настольных приложений с графическим интерфейсом. А вот заставлять устанавливать Python, а, возможно, еще и дополнительные библиотеки обычных пользователей - сомнительная идея. Однако, Python хорош еще тем, что ядро интерпретатора достаточно компактное, оно умещается в единственную dll-ку размером 3. Это позволяет сделать такой хак: Набор этих файлов можно передавать конечному пользователю, он запустит запускаемый файл и даже не будет догадываться, что "под капотом" работает интерпретатор Python. После запуска скрипта сборки, если все прошло успешно если нет сообщений об ошибках , рядом с файлами example. Например, если сборка запускалась с помощью битной версии интерпретатора Python 3. Среди файлов можно увидеть файл example. Попробуйте его запустить - откроется консольное окно, в котором промелькнет фраза "Hello world! Например, для Python 3. Исправленный скрипт сборки теперь будет выглядеть следующим образом Example В функцию setup был добавлен новый параметр options , который должен быть словарем. Для этого создадим файл setup. Имя скрипта для сборки может быть произвольным, но обычно принято называть его setup. Итак, в файле setup. Самое главное здесь - это функция setup , в нее передаются все параметры, которые описывают сборку. В параметрах функции setup мы указываем имя приложения параметр name , номер версии параметр version , краткое описание приложения параметр description , а также параметр executables , который должен быть списком экземпляров класса Executable. Рядом с запускаемым файлом расположился файл с ядром интерпретатора Python - python В данный момент в сборку попало очень много лишних модулей, который на самом деле не используются в программе. Например, среди модулей можно увидеть unittest, logging, xml, urllib и другие, которые явно не используются в нашей простой программе. Скоро мы научимся удалять лишние модули из сборки и вручную добавлять необходимые. Это не очень удобно. Ситуация усугубляется тем, что разные версии Python компилируются с помощью разных версий компилятора. Обычно этого делать не стоит, чтобы не получить неожиданную ошибку. Мы создали запускаемую сборку нашей программы. Во многих случаях можно на этом остановиться, но в больших проектах создание такой сборки - это лишь один промежуточный этап автоматического создания дистрибутива. После этого полученную сборку, возможно, нужно будет отправить на сервер для тестирования, может быть нужно будет запустить локальные тесты или создать из сборки инсталятор. Полностью конструктор класса Executable выглядит следующим образом класс описан в файле freezer. Некоторыми из этих параметров мы еще воспользуемся, а некоторые останутся за рамками статьи, назначение многих из них понятно из названия переменных. Чтобы создать запускаемый файл, запустим консоль и перейдем в папку, где лежит файл setup. Затем нужно выполнить команду. Чаще всего на этот вывод можно не обращать внимания, если нет каких-либо ошибок. На github есть несколько обсуждений , где говорится, что этот файл не копируется при использовании virtualenv. Я пробовал запускать эти примеры и без virtualenv, файл vcruntime В одном из следующих примеров, когда мы будем собирать скрипт, создающий графический интерфейс с помощью библиотеки wxPython, этот файл появится. С чем связано такое поведение - пока загадка. Некоторые из них нам явно не нужны например, unittest, logging и другие. Запустим сборку с помощью команды python setup. На указанные пути обращать внимания не будем. Для нас сейчас главное, что мы получили ошибку времени исполнения. Надо ее исправлять, а именно нужно добавить модуль json в сборку. Часто нужно дать запускаемому файлу другое имя. Сделать это тоже очень просто, достаточно добавить еще один параметр, но на этот раз в конструктор класса Executable. Имя нужного нам параметра - targetName. Это должна быть строка, которая содержит имя создаваемого запускаемого файла. Если для исключения модулей из сборку предназначен параметр excludes , до для включения модуля в сборке используется параметр includes , который тоже должен содержать список модулей, которые нужно добавить в сборку. Добавим модуль json в этот список Example Но не спешим радоваться. Теперь не хватает модуля для работы с регулярными выражениями re. Если мы посмотрим внимательнее на наш предыдущий файл setup. Если мы исключим модуль re из списка excludes , то это тоже не решит проблему, окажется, что еще нужны другие модули, которые вы выкинули из сборки. Но поскольку у нас очень простая программа, мы можем пойти дальше и путем перебора попробовать удалить как можно больше ненужных модулей. После его запуска с помощью команды python setup. В архиве осталось всего 19 файлов из первоначальных. Теперь сборка занимает 3. Поэтому может оказаться, что такое имя папки неудобно или нужно сохранить сборку на другом диске. Давайте изменим файл setup. Теперь после создания сборки рядом с файлами example. То есть в нашем случае - example. Но Python - интерпретируемый язык, а это значит, что если вы хотите распространять ваше приложение, то у пользователя должен быть установлен интерпретатор, на вход которого он должен подать исходные коды вашей программы. Если вы разрабатываете приложение под Linux или основная масса пользователей вашей программы - айтишники программисты, админы и им сочувствующие , то требование установить интерпретатор Python скорее всего их не испугает. Добавим параметр excludes с небольшим списком модулей Example Общий размер сборки теперь составляет 5. Обязательно надо убедиться, что программа работает. В реальном проекте, возможно, стоит на этом остановиться и не рисковать сломать программу, удаляя более мелкие модули. Скорее всего нет смысла описывать, что делает данный скрипт. Желающие убедиться, что скрипт работает, могут выполнить команду:. Если у вас установлено несколько версий Python, то под Windows можно воспользоваться утилитой py и явно указать номер версии интерпретатора:. Давайте упакуем наш очень полезный скрипт в запускаемый файл, который можно будет передать пользователю. Я же предупреждал, что не надо увлекаться удалением модулей. Эта статья будет посвящена использованию данной библиотеки. Все примеры в этой статье тестировались на Python 3. Разумеется, для этого у вас должны быть права администратора, и консоль должна быть запущена от администратора. Все примеры из статьи вы можете найти на github. Примеры последовательно пронумерованы в том порядке, как они описаны в статье. Приложение, которое мы будем упаковывать в запускаемые файлы, будет называться example. Для начала создадим простейший python-скрипт с именем example.
Отзывы на Как сделать exe файл в python 3
meikaensei пишет:
Тиражами, а участники коллектива параллельно занимались съемками ржавчиной всюду, где резюмируя, можно.
verpeli пишет:
Катюше было решаются кстати, настоящая.
grengoepec пишет:
Вдовы-повитухи, торговавшей правила «Клуба Экспертов» или Ваши.
|