{"id":14274,"url":"\/distributions\/14274\/click?bit=1&hash=fadd1ae2f2e07e0dfe00a9cff0f1f56eecf48fb8ab0df0b0bfa4004b70b3f9e6","title":"\u0427\u0435\u043c \u043c\u0443\u0440\u0430\u0432\u044c\u0438\u043d\u044b\u0435 \u0434\u043e\u0440\u043e\u0436\u043a\u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430\u043c?","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"6fbf3884-3bcf-55d2-978b-295966d75ee2"}

Компилируем код 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.

Данный метод компиляции не оптимизирует включение только необходимых библиотек, поэтому нужно быть готовым к тому, что его размер будет занимать достаточно объема. В нашем случае код из 120 строк с библиотекой Pandas и Datetime собран в программу весом почти 220 Mb. Теперь данным файлом может пользоваться любой сотрудник.

Хотелось бы обратить внимание на следующие нюансы: если вы компилируете файл на 64 битной OS Windows 10, то он не запустится на 32 битной OS Windows 7.

Если же файл будет скомпилирован на 32 битной OS Windows 7, то его можно будет запустить как на 32 битных, так и на 64 битных OS Windows 7/10.

0
25 комментариев
Написать комментарий...
Юрий Б.

Странно такое тут видеть, но сохранил, задача может стать актуальной

Ответить
Развернуть ветку
NTA
Автор

Юрий, спасибо! С радостью будем делиться полезными лайфхаками и дальше:)

Ответить
Развернуть ветку
Garry Galler

Уж сколько раз твердили миру.... А воз и ныне там. Не компилируется Python в exe. Начините, наконец, думать и учить матчасть.

Ответить
Развернуть ветку
Comp Lab

А если руки чешутся?

Ответить
Развернуть ветку
Garry Galler

Программисты ( которые дружат с головой) и знают, что pyinstaller это самораспаковывающийся в TEMP архив (на распаковку которого тратится время) создают автономные приложения  для распространения на основе Emdedded Python, который есть на офф. сайте.

Ответить
Развернуть ветку
Mightest Shiz of All Time

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

Ответить
Развернуть ветку
Против Спама

Откомпилируйте кто-нибудь unoconv
Это универсальный конвертор офисных документов через командную строку

Ответить
Развернуть ветку
как 100% работает

pyinstaller: error: unrecognized arguments: -onefile 
что делать?

Ответить
Развернуть ветку
Олег Абрамов

--onefile 

Ответить
Развернуть ветку
Erdaulet Bakitjanuli

SyntaxError: invalid syntax что делать

Ответить
Развернуть ветку
chroma

дядь, это значит что чето ты не так написал. ищи ошибку

Ответить
Развернуть ветку
Олег Абрамов

Просто автор не догадался текст статьи нормально отформатировать :)

Ответить
Развернуть ветку
IT IT

У меня python 3.9.1 и что мне делать?  не хочу устанавливать python 3.5 так как его уже удалили а поддержка python 3.5.11 и тд. прекратятся к слейдушему году или через несколько месяцев ((((

Ответить
Развернуть ветку
NTA
Автор

IT IT, при поиске решения, мы часто используем официальную документацию https://docs.python.org/3/index.html. Всегда рекомендуем ее изучать в первую очередь, если что-то не выходит

Ответить
Развернуть ветку
Станислав Гусол

Скрипты отрабатывает но итоговый exe не работает. Говно этот pyinstaller.

Ответить
Развернуть ветку
NTA
Автор

Станислав, вот тут рассматривается некорректная работа файла exe. Может быть у вас похожая ошибка https://qna.habr.com/q/790525 

Ответить
Развернуть ветку
Элхан Раимбердиев

я когда открываю ехе открывается командая строка и тут же закрывается

Ответить
Развернуть ветку
Элхан Раимбердиев

у меня почему то когда запускаю ехе открывается командная строка и окно игры а потом и тут же закрывается
помогите

Ответить
Развернуть ветку
Михаил Тонкошкура

Нужно запустить от имени администратора. Мне это помогло.

Ответить
Развернуть ветку
Владимир Чирков

Автору респект и уважуха! Все работает pyinstaller name.py без лишних движений, версия python 3.8.

Ответить
Развернуть ветку
Лайм

что делать если в папке дист нет файлов?

Ответить
Развернуть ветку
Андрей Горлов

А если нужно скомпилировать приложение, где несколько python файлов?

Ответить
Развернуть ветку
NTA
Автор

Подобного опыта не было, тем не менее технически это скорее возможно и поиск выдает материалы, посвященные данной тематике

Ответить
Развернуть ветку
Игорь

120 строк кода равно 220 МБт?..))
На Delphi 7 это будет 400 кБт !!!
А на C++ от Borland ещё меньше.

Ответить
Развернуть ветку
NTA
Автор

Все верно, код из 120 строк с библиотекой Pandas и Datetime собран в программу весом почти 220 Mb. Данный метод компиляции не оптимизирует включение только необходимых библиотек, поэтому нужно быть готовым к тому, что его размер будет занимать достаточно объема.

Ответить
Развернуть ветку
22 комментария
Раскрывать всегда