Programmering nivå 1 med Python

Kapitel 17: Gör en Tkinter-app till en Mac-app med PyInstaller

I detta kapitel lär du dig steg för steg hur du paketerar ett Tkinter-program till en körbar Mac-app.

Innehållsförteckning

Klicka på ett avsnitt för att hoppa direkt.

17.1 Steg för steg med PyInstaller

1. Kontrollera att programmet fungerar

Börja med att testa din Pythonfil som vanligt.

python3 main.py

Programmet ska fungera innan du försöker göra en app.

2. Öppna Terminal

Öppna Terminal på din Mac och gå till mappen där din Pythonfil finns.

cd ~/Desktop/minapp

Står du i mappen Programmering 1 kan du till exempel skriva:

cd "kap 16"

Med kommandot ls kan du kontrollera att du är i rätt mapp.

Skärmbild av Terminal som visar att man är i rätt mapp med kommandot ls

3. Installera PyInstaller

pip3 install pyinstaller

Om det inte fungerar kan du prova:

python3 -m pip install pyinstaller

4. Kontrollera att PyInstaller är installerat

python3 -m PyInstaller --version

Om det inte fungerar, prova:

pyinstaller --version

Om du får ett versionsnummer är allt klart.

5. Bygg appen

Om din fil heter main.py:

python3 -m PyInstaller --windowed --onedir main.py

Detta betyder:

  • --windowed: appen öppnas utan terminalfönster
  • --onedir: appen byggs som en mapp med allt den behöver

På macOS skapas då både en körbar fil och en app i dist-mappen.

6. Hitta appen

När byggandet är klart får du normalt mapparna:

build
dist
main.spec

Gå in i dist-mappen. Där ska du hitta något i stil med:

main.app

Det är din Mac-app.

7. Starta appen

Dubbelklicka på appen i Finder.

Om macOS varnar för okänd utvecklare kan du behöva:

  • högerklicka på appen
  • välja Öppna
  • välja Öppna igen

8. Bygg med eget namn

pyinstaller --windowed --onedir --name Filminfo main.py

Då blir appen:

Filminfo.app

9. Lägg till ikon

Om du har en ikonfil i icns-format:

pyinstaller --windowed --onedir --name Filminfo --icon ikon.icns main.py

10. Viktigt för macOS

Bygg appen på en Mac.

En Mac-app bör byggas på samma typ av system som den ska köras på.

11. Använd inte detta som första val på Mac

pyinstaller --onefile --windowed main.py

Det fungerar ibland, men rekommenderas inte som förstahandsval för macOS-appbundles.

12. Om appen inte fungerar

Vanliga problem är:

  • fel Python-miljö
  • saknade filer som programmet använder
  • fel sökvägar till bilder eller andra resurser
  • att man byggt innan programmet fungerade färdigt

Om appen kraschar direkt, testa först att köra py-filen normalt igen.

13. Om programmet använder bilder eller andra filer

Om din Tkinter-app använder bilder, textfiler, json-filer eller andra resurser kan de behöva läggas till särskilt i bygget.

Då kan extra PyInstaller-inställningar eller en spec-fil behövas.

14. Enkel standardmodell

python3 -m pip install pyinstaller
cd sökväg/till/mappen
python3 -m PyInstaller --windowed --onedir main.py

15. Sammanfattning

Gör så här:

  1. testa att Pythonprogrammet fungerar
  2. installera PyInstaller
  3. öppna Terminal i rätt mapp
  4. kör pyinstaller med --windowed och --onedir
  5. öppna app-filen i dist

17.2 Exempel

Om du har filen filmapp.py, kan du till exempel skriva:

python3 -m PyInstaller --windowed --onedir filmapp.py

Då får du en app i dist-mappen, till exempel:

dist/filmapp.app

17.3 Bra att veta

PyInstaller analyserar ditt program och samlar med Python-tolk och beroenden i paketet.

Det är därför mottagaren oftast inte behöver installera Python separat för att köra appen.