Kako napraviti samostalne izvršne fajlove za Python aplikacije: PyInstaller i Nuitka

Python je izuzetno popularan programski jezik zbog svoje jednostavnosti, velike biblioteke i široke primene — od web razvoja do naučnih istraživanja i kreiranja desktop aplikacija sa grafičkim korisničkim interfejsom (GUI). Međutim, distribucija Python programa korisnicima koji nemaju instaliran Python interpreter može biti izazov. Rešenje za to su alati koji omogućavaju kreiranje samostalnih izvršnih fajlova (eng. standalone executables), tj. fajlova koji sadrže i Python interpreter i sve zavisnosti potrebne za rad programa.

U ovom članku ćemo se fokusirati na dva najpopularnija alata za ovo:

  • PyInstaller
  • Nuitka

Oba alata su odličan izbor za kreiranje izvršnih fajlova, uključujući one koji koriste GUI biblioteke kao što su Tkinter, PyQt, PySide, wxPython i druge.


Zašto praviti samostalne izvršne fajlove?

Kada razvijate Python aplikaciju, korisnicima obično morate pružiti:

  • Python kod (.py fajlovi)
  • Svim zavisnosti (biblioteke, moduli)
  • Python interpreter

Međutim, to je komplikovano i nepraktično, naročito ako krajnji korisnik nije programer. Samostalni izvršni fajl rešava ovaj problem time što spakuje sav potreban kod, biblioteke i interpreter u jedan ili nekoliko fajlova. Korisnik tada može pokrenuti program kao bilo koji drugi program, bez dodatne instalacije.


PyInstaller

Šta je PyInstaller?

PyInstaller je popularni alat koji analizira vaš Python program i automatski prikuplja sve zavisnosti i interpreter u jedan izvršni fajl. Radi na Windowsu, Linuxu i macOS-u.

Ključne karakteristike:

  • Automatsko pronalaženje zavisnosti — uključujući i GUI biblioteke.
  • Podrška za različite platforme.
  • Može napraviti jedan veliki .exe fajl (tzv. onefile) ili folder sa izvršnim fajlom i zavisnostima.
  • Podrška za skrivanje konzole (za GUI aplikacije).
  • Jednostavna upotreba.

Kako koristiti PyInstaller?

  1. Instalacija:
pip install pyinstaller
  1. Kreiranje izvršnog fajla:

Za osnovnu skriptu:

pyinstaller your_script.py

Za GUI aplikaciju bez prikaza konzole:


pyinstaller --onefile --windowed your_gui_script.py
  • --onefile pravi jedan .exe fajl.
  • --windowed (Windows/macOS) onemogućava prikaz konzole.
  1. Rezultat se nalazi u dist/your_script ili dist/your_script.exe.

Prednosti PyInstaller-a:

  • Jednostavan za korišćenje.
  • Dobro podržava GUI biblioteke (Tkinter, PyQt, wxPython).
  • Aktivno razvijan i ima veliku zajednicu.
  • Mogućnost prilagođavanja pakovanja dodatnim datotekama ili ikonama.

Ograničenja:

  • Pakovani fajl može biti velik (jer sadrži Python interpreter).
  • Povremeno zahteva ručno podešavanje za neke biblioteke (npr. za specifične dinamičke zavisnosti).
  • Kreira izvršni fajl specifičan za platformu — ne može se napraviti Windows .exe sa Linux mašine bez dodatnih alata.

Nuitka

Šta je Nuitka?

Nuitka je kompajler za Python koji prevodi Python kod u C/C++ kod, a zatim ga kompajlira u izvršni fajl koristeći standardni C/C++ kompajler (gcc, MSVC…). Rezultat je izvršni fajl koji može biti efikasniji i brži u izvršavanju od običnog Python programa.

Ključne karakteristike:

  • Kompajlira Python u nativni kod, što može poboljšati performanse.
  • Pakovanje svih zavisnosti u jedan izvršni fajl ili folder.
  • Dobro podržava popularne biblioteke, uključujući GUI.
  • Može koristiti --onefile mod (kroz nuitka-standalone opciju).

Kako koristiti Nuitka?

  1. Instalacija:
pip install nuitka
  1. Kompajliranje Python skripte:
nuitka --standalone --onefile your_script.py
  • --standalone pravi paket sa svim zavisnostima.
  • --onefile pakuje u jedan fajl.

Za GUI aplikacije dodajte:

nuitka --standalone --onefile --windows-disable-console your_gui_script.py

(na Windowsu)

  1. Izvršni fajl će biti kreiran u trenutnom folderu.

Prednosti Nuitka:

  • Efikasniji izvršni fajl (brža aplikacija).
  • Optimizacije C/C++ kompajlera.
  • Može smanjiti veličinu finalnog fajla u odnosu na PyInstaller.
  • Radi kao pravi kompajler, a ne samo bundler.
  • Dobro radi sa GUI bibliotekama.

Ograničenja:

  • Kompajliranje može biti sporije i komplikovanije nego PyInstaller.
  • Može biti potrebno da imate instalirane C/C++ kompajlere.
  • Manje intuitivan za početnike.
  • Povremeno može zahtevati dodatna podešavanja za kompleksne projekte.

Usporedba PyInstaller i Nuitka

OsobinaPyInstallerNuitka
Princip radaBundlovanje Python koda i interpreterKompajliranje Python u C/C++ i kompajliranje u izvršni fajl
Podrška za GUIOdličnaOdlična
PerformanseBez ubrzanjaBrže izvršavanje
Veličina fajlaObično većaManja u nekim slučajevima
Jednostavnost upotrebeVećaPotrebno znanje o kompajlerima
Kompajler potrebanNije potrebanPotreban C/C++ kompajler
Podrška platformiWindows, Linux, macOSWindows, Linux, macOS
DokumentacijaDobraDobra, ali tehničkija

Posebno o GUI bibliotekama

GUI biblioteke često zavise od specifičnih dodataka, dinamičkih biblioteka i resursa, što može otežati pakovanje.

PyInstaller

  • Automatski prepoznaje i pakuje Tkinter, PyQt5/PySide2, wxPython i druge.
  • Ima ugrađene hooks za ove biblioteke da bi rešio dodatne zavisnosti.
  • Može se podesiti da uključi dodatne datoteke (ikonice, resurse).
  • Dobro rukuje sa statičkim i dinamičkim bibliotekama.

Nuitka

  • Takođe podržava GUI biblioteke.
  • Može zahtevati ručno uključivanje resursa i dodatnih biblioteka.
  • Prednost je što može dati brži izvršni fajl za GUI aplikacije.

Zaključak

Ako želite brzo i jednostavno da napravite samostalni izvršni fajl za Python program, naročito ako koristite GUI biblioteke, PyInstaller je najčešći i pouzdan izbor. Njegova jednostavnost i velika zajednica čine ga prvim izborom za većinu programera.

Ako vam je, osim pakovanja, bitna i brzina izvršavanja i spremni ste da uložite dodatno vreme u podešavanje i instalaciju kompajlera, tada je Nuitka odličan izbor jer može značajno ubrzati program i smanjiti veličinu finalnog fajla.

By Abel

Leave a Reply

Your email address will not be published. Required fields are marked *