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.
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:
- testa att Pythonprogrammet fungerar
- installera PyInstaller
- öppna Terminal i rätt mapp
- kör pyinstaller med --windowed och --onedir
- ö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.