Uygulama Dağıtımı — PySide6'dan Tek Çalıştırılabilir Dosyaya
Dönem boyunca bir PySide6 uygulaması yazdık. Ama .py dosyası,
Python + kütüphaneler kurulu olmayan birinde çalışmaz. Bu hafta onu herkesin
açabileceği tek bir programa dönüştürüyoruz.
Kaynak kod değil, çalışan program teslim etmek.
PyInstaller ile
yorumlayıcı + bağımlılıkları paketle.
Bayraklar ve .spec ile ikon, isim, veri.
Sonunda: kendi uygulamanı arkadaşına gönder, onun bilgisayarında çift tıkla açılsın.
.py göndermek, birine yemek tarifi
göndermek gibidir — mutfağı (Python, kütüphaneler) yoksa yiyemez. Bize pişmiş yemek lazım.
Python'un kendisi de pakete girer.
PySide6
ve diğer import'lar.
Tüm
.py dosyaların.
Kurulum gerektirmeyen çalıştırılabilir.
Sonuç kendi kendine yeten (self-contained): hedef bilgisayarda Python kurulu olmasa bile çalışır.
pip install pyinstaller
pyinstaller main.py # bu kadar!
pyinstaller senin kodunu analiz eder, hangi
modülleri kullandığını bulur ve hepsini toplayıp bir çalıştırılabilir üretir.
Alternatifler: cx_Freeze, Nuitka, Briefcase
— mantık aynı, biz en yaygını PyInstaller ile ilerliyoruz.
Not: Paketleme hedef işletim sistemine göre yapılır —
Windows'ta üretirsen Windows .exe, macOS'ta .app çıkar.
Geçici derleme çöpü. Görmezden gel, silebilirsin.
Dağıtacağın son uygulama burada. Asıl istediğin bu.
Paketleme ayarların. Sonraki sefer bunu kullanırsın.
$ pyinstaller main.pyGUI uygulamaları için tipik ikili: --onefile
--windowed. Gerisini isteğe göre eklersin.
# 1) proje klasörüne gir
cd sayac_uygulamasi
pyinstaller --onefile --windowed --name Sayac main.py
# 2) dist/Sayac.exe hazır → dağıt!
Tek satır komut, tek dosya çıktı. Artık Python bilmeyen biri bile çift tıklayıp uygulamayı açar.
pyinstaller --onefile --windowed --icon logo.ico \
--add-data "images:images" main.py
--icon logo.ico → programın simgesi.
--add-data "images:images" → görsel/ses gibi ek
dosyaları pakete kat (yoksa .exe onları bulamaz).
⚠ Kod içinde dosya yolunu çalıştığı yere göre çöz — sabit yol paketlenince kırılır.
Kural: uygulamanın açtığı her dış dosya ya pakete eklenmeli ya da yanında dağıtılmalı.
a = Analysis(['main.py'], datas=[('images', 'images')])
exe = EXE(a.scripts, name='Sayac', console=False, icon='logo.ico')
# pyinstaller Sayac.spec → aynı ayarla tekrar paketle
.spec aslında bir Python betiği. İçinde
Analysis, EXE gibi nesneler var — tıpkı öğrendiğimiz sınıflar.
Uzun komut yerine ayarları dosyada saklarsın; sonraki sefer sadece
pyinstaller Sayac.spec.
Bu, "yapılandırmayı kod olarak tut" fikridir: ayar bir nesne, dağıtım tekrarlanabilir olur.
GUI uygulamada --windowed unutmak → arkada siyah
pencere.
--add-data eksik veya yol yanlış → resimler
kayıp.
Tek dosya büyük olur ve bazen yanlış alarm verir — normaldir.
Altın kural: paketledikten sonra temiz bir makinede (veya Python'suz ortamda) mutlaka test et.
--onefile ne yapar?--windowed?.spec dosyası nedir?.py her yerde
çalışmaz; kullanıcıya çalışan program veririz.
Yorumlayıcı + bağımlılık + kod →
tek çalıştırılabilir. Çıktı dist/.
--onefile,
--windowed, --name, --icon, --add-data.
Ayarı kod olarak sakla → tekrarlanabilir dağıtım.
Artık dönem projeni gerçek bir uygulama gibi teslim edebilirsin.
1 · Paketle. Önceki haftalarda yaptığın
panel/sayaç uygulamasını al: pyinstaller --onefile --windowed --name Panelim main.py
2 · Kişiselleştir. Bir .ico ikon
ekle (--icon) ve varsa görsellerini --add-data ile pakete kat.
3 · Test et. dist/ içindeki
dosyayı farklı bir klasöre/makineye taşı, çift tıkla — açılıyor mu?
4 · Dağıt. Çıktıyı bir arkadaşına gönder; onun bilgisayarında Python olmadan çalıştığını doğrulat.
Süre: ~40 dk. Takıldığın yerde
slaytlara dön; hata varsa önce --windowed ve --add-data'yı kontrol et.
Uygulamayı paketlemeyi öğrendik. Sırada, OOP prensiplerini yapay zekâ tarafına taşıyoruz: PyTorch'ta sınıflarla model kurma.
← Ders Ana Sayfasına Dön