Python: Tworzenie Plików Wykonywalnych

Python: Tworzenie Plików Wykonywalnych

5 Listopad 2021

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:

Proces instalacji !

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:

Proces budowy aplikacji !

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.