İçeriğe atla

Python uygulaması için Windows yükleyici (PyInstaller'dan Setup.exe'ye)

Bir Python programını PyInstaller ile dondurun, ardından çıktıyı kısayolları ve kaldırıcısı olan gerçek bir Windows yükleyicisine sarın. Yükleyiciler için onedir neden onefile'dan iyidir ve hangi ayarlar önemlidir.

31 Ekim 2026 tarihinde güncellendi · 3 dk okuma

PyInstaller, bir Python programını Python kurulu olmadan çalışan bir Windows .exe dosyasına dönüştürür. Yapmadığı şey ise o programı kurmaktır: Başlat menüsünde giriş yok, kaldırıcı yok, Windows Ayarları'nda hiçbir şey yok. Bunun için PyInstaller çıktısını bir yükleyiciye sararsınız. İşte betikten Setup.exe'ye giden yolun tamamı.

1. adım: uygulamayı PyInstaller ile dondurun

PyInstaller'ı projenin ortamına kurun, ardından giriş betiğinizin bulunduğu klasörden derleyin:

pip install pyinstaller
pyinstaller --noconsole --onedir --name MyApp --icon app.ico main.py

Bayrakların işlevi:

  • --onedir (varsayılan), içinde MyApp.exe ve kütüphaneleri barındıran bir _internal/ klasörü olan dist/MyApp/ klasörünü üretir. Yükleyiciler için bunu kullanın. --onefile'dan daha hızlı başlar, çünkü her açılışta geçici bir klasöre hiçbir şeyin açılması gerekmez; ayrıca antivirüs sezgisel taramalarının dikkatini daha az çeker.
  • --noconsole, grafik arayüzlü uygulamalarda (Tkinter, PyQt, Kivy vb.) siyah konsol penceresini gizler. Komut satırı araçlarında kullanmayın.
  • --icon app.ico, simgeyi .exe içine gömer. Yükleyici için de aynı .ico dosyasını kullanın.
  • --name MyApp, çalıştırılabilir dosyaya ve çıktı klasörüne ad verir.

Programınızın çalışma zamanında açtığı veri dosyaları (görseller, yapılandırma şablonları, modeller) --add-data "src;dest" ile veya .spec dosyasında eklenmelidir; aksi halde dist/MyApp/ içinde yer almazlar.

dist/MyApp/MyApp.exe dosyasını açın ve uygulamanın çalıştığını doğrulayın. Mümkünse dist/MyApp klasörünün tamamını Python kurulu olmayan başka bir Windows bilgisayara kopyalayıp orada da çalıştırın.

2. adım: çıktı klasörünü zipleyin

dist/MyApp/ klasörünün içeriğini zipleyin: MyApp.exe ve _internal/. build/ klasörünü, .spec dosyasını ve kaynak ağacınızı dahil etmeyin. Kurulan şey, bayt bayt, bu zip dosyasıdır.

3. adım: yükleyiciyi oluşturun

  1. Zip dosyasını ExeTup'a yükleyin. MyApp.exe dosyasını ana program olarak bulur.
  2. Uygulama adını, sürümü, yayıncıyı ve isteğe bağlı olarak bir lisans girin.
  3. Tüm kullanıcılar (Program Files, yönetici onayı) veya geçerli kullanıcı (yönetici hakları gerekmez) seçeneğini belirleyin. İş arkadaşlarına dağıtılan araçlar çoğunlukla kullanıcı başına kurulumda daha iyi çalışır.
  4. Mimariyi seçin. PyInstaller, onu çalıştırdığınız Python için derler; 64 bit Python 64 bit uygulama üretir.
  5. app.ico dosyasını yükleyin, istediğiniz kısayolları açın ve derleyin.
  6. Setup.exe dosyasını indirip Windows'ta test edin.

Python'a özgü notlar

  • Antivirüs yanlış alarmları. PyInstaller paketleri, özellikle --onefile derlemeleri, aşırı temkinli antivirüs sezgisel taramalarının sık hedefidir. Normal bir yükleyicinin içindeki, Program Files'a yerleştirilmiş bir onedir derlemesi diğer programlar gibi davranır ve işaretlenme olasılığı daha düşüktür. Kod imzalama daha da yardımcı olur.
  • Boyut. Bir Tkinter uygulaması 20–40 MB'tır; PyQt, NumPy veya PyTorch bunu çok daha yukarı taşır. Yükleyicinin LZMA sıkıştırması genellikle bunu yarıya indirir. Küçük tutmak için kullanmadığınız modülleri --exclude-module ile hariç tutun.
  • İlk açılış. Onedir'in açma işlemine ihtiyacı olmadığından ilk başlatma sonrakiler kadar hızlıdır.
  • Güncellemeler. Daha yüksek sürüm numaralı yeni bir yükleyici dağıtın. Önceki sürümün üzerine kurmak dosyaları yerinde değiştirir.
  • Konsol araçları. Komut satırı programı için makine başına kurulumu düşünün ve kullanıcılara kurulum klasörünü bildirin; yükleyici bunu PATH'e eklemez.

Alternatifler

Nuitka ve cx_Freeze de içinde .exe bulunan bir klasör üretir; yükleyici adımı aynıdır. Yükleyici betiğini kendiniz yazmak isterseniz NSIS ve Inno Setup PyInstaller çıktısıyla çalışır.

Sık sorulan sorular

Yükleyici için --onefile mı --onedir mi kullanmalıyım?

--onedir. Yükleyici zaten kullanıcılara indirecekleri tek bir Setup.exe verir; dolayısıyla onefile'ın yavaş açılışına ve geçici klasöre açma bedeline katlanmak için bir neden yoktur. Onedir aynı zamanda PyInstaller'ın varsayılanıdır.

Kullanıcıların Python kurması gerekir mi?

Hayır. PyInstaller, Python yorumlayıcısını ve kütüphaneleri klasöre paketler; yükleyici de bu klasörü kullanıcının makinesine koyar.

Windows yükleyicim hakkında neden uyarı veriyor?

Yeni ve imzasız indirmeler, itibar kazanana kadar Microsoft SmartScreen'i tetikler. Neler yapabileceğinizi SmartScreen rehberinde bulabilirsiniz.

Örnek bir yapılandırma veya veri klasörü ekleyebilir miyim?

Evet. Ya PyInstaller'ın --add-data seçeneğiyle ekleyin ki _internal/ içine yerleşsin, ya da ExeTup'ın "Diğer dosyalar" adımında ekleyerek MyApp.exe yanına koyun.

İlgili rehberler