Създаваме проект на python3 - PyQT5 под Windows с помощта на PyInstaller, SavePearlHarbor
Още едно копие на пристанището
Изграждане на проект на python3&PyQT5 за Windows с помощта на PyInstaller
Причината за написването на статията беше огромен брой въпроси, които начинаещите постоянно имат такова съдържание: „Как да изградя проект с pyqt5“, „Защо не работи“, „Кой инструмент да избера“ и др. Днес ще научим как да сглобяваме проекти без страдание и танци с тамбура.
Някак си трябваше да напиша малко приложение за десктоп. Python беше избран като език за програмиране за разработка, защото беше идеален за решаване на моя проблем. Стандартната библиотека на Python вече включва библиотеката tkinter, която ви позволява да създавате GUI. Но проблемът с tkinter е, че малко внимание се отделя на тази библиотека и е доста трудно да се намери курс, книга или ЧЗВ за нея в Интернет. Затова беше решено да се използва по-мощна, модерна и функционална Qt библиотека, която има обвързвания към езика за програмиране python под формата на библиотеката PyQT5. Можете да прочетете повече за PyQT тук. Като пример ще използвам кода:
Ако сте повече или по-малко опитен разработчик, тогава разбирате, че не можете да изпълнявате Python код без интерпретатор. И бих искал да дам възможност на всеки потребител да използва програмата. Тук специалните библиотеки ни идват на помощ и ни позволяват да събираме проекти в .exe, които след това могат да се изпълняват безпроблемно като обикновено приложение.
Има голям брой библиотеки, които ви позволяват да направите това, сред които най-популярните са cx_Freeze, py2exe, nuitka, PyInstaller и др. За всяка е писано доста. Но трябва да кажа, че много от тези решения ви позволяват да изпълнявате код само на компютър с предварително инсталиран интерпретатор и pyqt5. Не мисля, че потребителят ще го направимъчи се и си слагай допълнителни пакети и програми. Надявам се, че разбирате, че стартирането на програма в среда за разработка и стартирането на програма на потребител не е едно и също нещо. Трябва също да се отбележи, че всяко решение имаше свои собствени проблеми: едното не стартираше, друго събра това, което не можа да стартира по-късно, третото отказа да направи каквото и да било.
След много танци с тамбура и активно гугълване, все пак успях да изградя проекта с помощта на pyinstaller в напълно функционално приложение.
Малко за Pyinstaller
Pyinstaller изгражда приложение на Python и всички зависимости в един пакет. Потребителят може да стартира приложението, без да инсталира интерпретатора на Python или други модули. Pyinstaller поддържа python 2.7 и python 3.3+ и библиотеки като numpy, PyQt, Django, wxPython и други.
Pyinstaller е тестван на Windows, Mac OS X и Linux. Както и да е, това не е междуплатформен компилатор: за да създадете приложение на Windows, направете го на Windows; За да направите приложение на Linux, направете го на Linux и т.н.
PyInstaller е използван успешно с AIX, Solaris и FreeBSD, но не е тестван.
Освен това, след сглобяването, приложението е само около 15 mb забавно. Това, между другото, е предимството на pyinstaller, тъй като той не събира всичко, а само необходимото. Подобни библиотеки дадоха резултат за 200-300 mb.
Да започнем сглобяването
Преди да започнем изграждането, трябва да инсталираме необходимите библиотеки, а именно pywin32 и самия pyinstaller:
За да сте сигурни, че всичко е наред, въведете командата:
трябва да се покаже версията на pyinstaller. Ако всичко е инсталирано правилно, продължаваме.
Отворете cmd в папката на проекта и въведете:
Всъщност това енай-простата команда, която ще сглоби нашия проект. Синтаксисът за командата pyinstaller е:
pyinstaller [опции] скрипт [скрипт ...] спецификационен файл
Най-често използвани опции:
--onefile - сглобяване в един файл, т.е. .dll файловете не се записват. —прозорец - при стартиране на приложението ще се появи конзолата. --noconsole - когато приложението стартира, конзолата няма да се появи. —icon=app.ico — добавяне на икона към прозореца. --paths - възможност за ръчно въвеждане на пътя до необходимите файлове, ако pyinstaller не може да ги намери (например: --paths D:\python35\Lib\site-packages\PyQt5\Qt\bin)
PyInstaller анализира файла myscript.py и прави следното:
- Записва файла myscript.spec в същата папка като скрипта.
- Създава папка за компилация в същата папка като скрипта.
- Записва някои регистрационни файлове и работни файлове в папката за изграждане.
- Създава папка dist в същата папка като скрипта.
- Записва изпълним файл в папката dist.
В резултат на това нашата команда ще изглежда така:
След като стартирате програмата, ще намерите две папки: dist и build. Всъщност нашето приложение се намира в папката dist. Впоследствие папката за компилация може безопасно да бъде изтрита, това не се отразява на производителността на приложението.