Перейти до основного вмісту

Перетворюємо py на exe

Ну от, написали ви, значить, шедевральну програму на мові програмування Python, але як нею користуватися? Вам-то легко! Ви її написали, значить середовище для виконання програми у вас є. А що робити вашим друзям, з якими ви неодмінно захочете нею поділитися? Їм теж треба встановлювати IDLE Python, Thonny чи щось подібне? Добре було б перетворити програму з формату .py на формат .exe, який з легкістю виконає будь-яка Windows! То де знайти "конвертер"?


Для такого перетворення вам, як програмісту, потрібно над остаточною версією вашої програми у форматі py ще трохи пошаманити. І робиться це за допомогою спеціальних "прибамбасів", якими оснащений сам Python.

Бібліотека PyInstaller

Ця бібліотека на сьогодні є найпростішим інструментом для перетворення програми на Python у виконуваний файл, оскільки на сучасних версіях інтерпретатора Python вона вже повинна бути присутня. Залишається тільки її використати.

1. Переходимо в командний рядок

Щоб відкрити вікно командного рядка натискаємо комбінацію клавіш Win+R, у віконці, що з'явиться, вводимо cmd й натискаємо ОК.

Результатом виконаних дій повинна стати поява чогось подібного на вашому екрані:


2. Відкриваємо папку з py-файлом

Наступна наша задача - опинитися в папці, де розміщена ваша програма. Робиться це просто. Потрібно лише знати її адресу. Ну а дізнатися адресу розташування файлу можна через властивості файлу (ПКМ Властивості):

От саме ту адресу копіюємо і вставляємо в командний рядок, дописавши перед тим cd ("change directory"), ось так:

Зверніть увагу на пропуск після cd

Натискаємо Enter і опиняємося в потрібному нам місці.

Залишилося тільки запустити pyinstaller і отримати результат.

3. Конвертація

Запуск конвертації здійснюється теж одним рядком, але в ньому потрібно зазначити усі потрібні нам параметри, а саме:

 --onefile  (або -F) - упакувати усе в один виконуваний файл;

 --onedir  (або -D) - розмістити увесь пакет в одній папці;

 --noconsole  (або -w) - приховати консольне вікно (для проєктів з графічним інтерфейсом);

 --icon="іконка.ico"  (або -i)- встановлення вашої іконки (файл .ico) на виконуваний файл.

Приклад команди з параметрами:

pyinstaller --onefile --noconsole --icon="myicon.ico" ваш_скрипт.py

Отже, в командному рядку вводимо щось таке:

...і натискаємо Enter.

Завершення процесу конвертації

В результаті перетворення там же, де і був файл py, отримаємо дві папки biuld і dist та файл з назвою конвертованого файла програми і розширенням .spec.

Якщо ми не збираємося повертатися до роботи над програмою, то папку build і файл .spec можна видалити, а от у папці dist ми якраз і знайдемо усе, що нам було потрібне: виконуваний файл з розширенням .exe, запустивши який побачимо результат роботи програми. Вона працюватиме уже під керуванням Windows і їй уже Python не потрібен.

В даному випадку це була програма, яка відтворює зображення засобами tkinter.

Якщо для роботи вашої програми потрібні сторонні файли, наприклад, файли зображень чи аудіофайли - не забудьте скопіювати в папку dist їх теж.

👀. Surprise!

Може статися так, що після введення в командному рядку pyinstaller... ви отримаєте повідомлення про помилку. Це означає, що з якихось причин сама бібліотека pyinstaller у вас відсутня.

Це зовсім не проблема, оскільки її легко встановити з того ж таки командного рядка:

У цьому випадку в командному рядку пишемо команду pip install pyinstaller:

...натискаємо Enter і очікуємо, коли скінчиться інсталяція

Все. Після цього повертаємося до попередніх пунктів і виконуємо те, що було описане вище.

Усі нюанси бібліотеки pyinstaller описані 👉 ТУТ 👈.

Auto Py To Exe

Отримати, фактично, той же таки pyinstaller тільки з графічним інтерфейсом можна, встановивши собі пакет auto-py-to-exe.

Встановлюється він так само, як і pyinstaller (pip install auto-py-to-exe), а викликається з командного рядка просто "по імені" безвідносно до того, в якій директорії ми зараз знаходимось:

Після цього побачите вікно програми, в якій і здійснюються усі необхідні налаштування exe-файлу (приємно, що українська мова в інтерфейсі присутня!)