🚫 Чому не варто збирати Python-проєкт у exe через PyInstaller
Багато початківців намагаються зібрати свій Python-проєкт у .exe-файл. Але є чимало причин, чому це не завжди гарна ідея.
Насправді цей процес не є компіляцією.
Фактично відбувається лише упаковка Python-інтерпретатора та бібліотек у саморозпакувальний архів [1].
Коли користувач запускає exe, спочатку виконується розпаковка цього архіву у тимчасову теку, і лише потім — запуск скрипта. Це має низку негативних наслідків:
1️⃣ Антивіруси часто сприймають такий .exe як загрозу.
Через використання стиснення файлів антивірусне ПЗ може активно скаржитися на ваш exe. Щоб переконатися в цьому, достатньо завантажити файл на VirusTotal. Якщо користувач зробить таку перевірку й побачить попередження, довіра до вас і вашого ПЗ може бути підірвана.
2️⃣ Проблеми з шляхами
exe запускається з однієї теки, але архів розпаковується та виконується в іншій. Це змушує вносити зміни до коду проєкту, які будуть враховувати зміну шляху.
3️⃣ Несумісність з окремими бібліотеками
Існує ймовірність, що через особливості певної бібліотеки проєкт не збиратиметься у exe. Причому ситуація може змінюватися від версії до версії бібліотеки і python. Найчастіше проблеми виникають із модулями, що використовують код на C/C++.
4️⃣ Складна діагностика помилок
Упаковка, особливо з опцією --windowed, може маскувати помилки: замість виведення повідомлення у консолі користувач просто отримає падіння програми. На одних пристроях програма може запускатися, а на інших — ні. Виявити причину, виправити її або оновити бібліотеки "на місці" просто неможливо.
5️⃣ Довгий старт програми
Очевидно що розпаковка з архіву буде сповільнювати запуск.
Хоча збірка у exe може здаватися зручною для поширення, на практиці вона часто створює більше проблем, ніж вирішує.
#PyInstaller
2 · 388 ·