Python: Tworzenie Plików Wykonywalnych
Programy pisane w języku C czy C++ zwyczajowo są kompilowane do postaci plików wykonywalnych. Niekiedy takowa funkcjonalność jest również potrzebna programistom piszącym w języku Python. Aby sprostać ich wymaganiom powstało wiele różnych narzędzi pozwalających budować pliki wykonywalne składające się z całego środowiska wykonywalnego dla Pythona oraz skryptów do uruchomienia. Jednym z takich programów jest Pyinstaller.
PyInstaller zamraża (pakuje) aplikacje Pythona w samodzielne pliki wykonywalne dla środowiska Windows, GNU/Linux, Mac OS X, Solaris oraz FreeBSD. Głównymi zaletami Pyinstallera w porównaniu z podobnymi narzędziami tego typu są:
- praca z Pythonem w wersjach 3.5-3.9,
- budowanie mniejszych plików wykonywalnych dzięki zaawansowanej kompresji,
- pełna wieloplatformowość
- wykorzystanie wsparcia systemu operacyjnego do ładowania bibliotek dynamicznych.
Głównym celem twórców Pyinstallera jest zapewnienie kompatybilności z wieloma pakietami Pythona i zmniejszenie ilości dodatkowej pracy koniecznej do utworzenia pliku wykonywalnego. Narzędzie to obsługuje wiele różnych bibliotek takich jak matplotlib, Django czy PyQt. Użytkownik nie musi stosować własnych modyfikacji w plikach lub skryptach konfiguracyjnych aby zintegrować je ze swoją aplikacją.
Instalacja
Instalacja pakietu jest bardzo prosta i możemy wykorzystać do tego managera pakietów dostępnego w pythonie. Dla managera pip wystarczy wykonać instrukcję:
pip install pyinstaller
natomiast użytkowicy posługujący się condą powinni wydać polecenie:
conda install pyinstaller
Proces instalacji w środowisku windows dla condy powinien przebiec w sposób zbliżony do poniższego:
Budowanie pliku wykonywalnego
Budowanie pliku wykonywalnego jest równie prosta jak proces instalacji. Wystarczy wydać polecenie pyinstaller w linii poleceń i rozpocznie się budowa pakietu wykonywalnego. Włączenie dodatkowej flagi –onefile powoduje wygenerowanie pojedynczego pliku wykonywalnego zawierającego wszystkie zależności wymagane do uruchomienia budowanej aplikacji. Bez włączenia tej opcji z wygenerowaną aplikacją będzie trzeba dostarczać wszystkich wymaganych bibliotek uruchomieniowych. Przykład rozpoczęcia budowy aplikacji zamieszczony został na listingu:
pyinstaller --onefile hello.py
Dla środowiska windows proces budowy będzie przebiegał w sposób zbliżony do poniższego:
Wynikiem działania programu będzie plik wykonywalny który znaleźć będzie można w katalogu dist który to zostanie utworzony w miejscu gdzie był budowany pakiet wykonywalny. Plik wykonywalny aplikacji będzie dosyć pokaźnego rozmiaru co jest związane z koniecznością opakowania skryptu w języku Python środowiskiem uruchomieniowym.
Rozwiązania alternatywne
Oprócz zaprezentowanego Pyinstallera użytkownicy Pythona mają do dyspozycji:
- cx_Freeze
- py2exe
Moim zdaniem najlepszym rozwiązaniem jest jednak Pyinstaller ponieważ jest najłatwiejszy w użyciu oraz zgodny z wieloma różnymi platformami dzięki czemu w łatwy sposób można tworzyć aplikacje wykonywalne dla różnych systemów operacyjnych.