Uygulamamı exe haline çevirdikten sonra birkaç soru

Pyinstaller ile ilk uygulamı exe haline getirdim ancak birçok sorum var altta listeledim hepsini;

1)Pyinstaller ile exe haline getirdim ancak ilk önce cmd ekranı açılıyor ve cmd ekranını kapatınca programda kapanıyor bu son kullanıcı için istenmeyen bir şey nasıl çözebilirim?

2)Şu anda içinde yok ancak otomatik güncelleme sistemi eklemeyi düşünüyorum (github üzerinden kod dosyalarına otomatik olarak bakacak ve değişiklik varsa dosyayı da değiştirecek) Peki bu bana sorun çıkartırmı sonuçta exe haline getirdim ve dosya artık değişti eğer çıkartırsa nasıl çözerim?

  1. Bu sorum sadece meraktan elbette bu küçücük uygulama parçası için reklam düşünmem ancak telefonlarda olduğu gibi bir reklam sistemi var mı? Yani telefonda belirli aralıklarla çıkan reklamlar gibi

Şu anda sadece deneme amacıyla programımı exe haline çevirdim eksiği çok daha onları halledeceğim

Şimdiden Teşekkür Ederim:)

  1. Sorun çözüldü

pyinstaller --onefile --noconsole %.py

% yerine kendi dosyanızın adını yazmanız gerekiyor

Normalde PyInstaller bir python dosyasında bulunan bütün import ifadelerini yakalar ve programda kullanılacak diğer python dosyalarının içinde bulunan kodları dondurarak binary dosyalarını oluşturur.

Örnek:

İsmi main.py olan bir dosyamız var diyelim. Bu dosyanın içinde de aşağıdakiler yazılı olsun.

import kutuphane
print(kutuphane.degisken)

main.py dosyasından bir executable dosya oluştururken, PyInstaller gider, kutuphane dosyasının mevcut olup olmadığına bakar. Mevcutsa bu dosyadan da bir binary dosyası oluşturur.

kutuphane.py dosyasında şunlar yer alıyor olsun:

degisken = 1

Şimdi ben bu main.py’yi kullanarak çalıştırılabilir dosya oluşturursam, dosya oluştuktan sonra da kutuphane.py’yi dosyanın bulunduğu dizine atsam ve degisken isimli değişkenin değerini 10 yapıp, çalıştırılabilir dosyayı çalıştırsam ekrana 1 yazısı yazdırılır. Çünkü yukarıdaki bahsettiğim gibi, PyInstaller, kutuphane.py dosyasının içindeki kodu kullanacaktır, benim main’in yanına attığım kutuphane.py dosyasını değil.

Ancak main dosyasını çalıştırdığım zaman kutuphane.py dosyasında yapılacak değişikliğe göre bir sonuç almak istiyorsam aşağıdaki yolu izleyebilirim.

kutuphane.py’nin ismini şimdilik a.py yapıyorum. Ve main.py dosyasından yeniden çalıştırılabilir bir dosya üretmeye çalışıyorum.
Oluşan main dosyasını çalıştırdığımda şöyle bir hata almam lazım.

Traceback (most recent call last):
  File "main.py", line 4, in <module>
ModuleNotFoundError: No module named 'kutuphane'
[19061] Failed to execute script main

İsmini a.py olarak değiştirdiğim dosyayı alıp, main dosyasının yanına koyuyorum ve main’i tekrar çalıştırıyorum. Bu sefer ekrana 1 yazılıyor. kutuphane.py dosyasındaki degisken isimli değişkenin değerini değiştirdiğim zamanda da yeni değer ekrana yazılıyor.

Yani özetle, python programlarınızı çalıştıracak olan ana dosyanızı, import edeceği diğer dosyaların yanından uzaklaştırın. Ve bu ana dosyadan çalıştırılabilir bir dosya oluşturun. Güncelleme işlemi diğer dosyalar üzerinde gerçekleşsin. Dosyaların içeriklerinin değişiyor olması sorun oluşturmayacaktır yeter ki isimler de bir değişiklik olmasın.

4 Beğeni

Aslında aynı şeyi düşünmüştüm ancak nasıl yapılacağı konusunda bir fikrim yoktu anladım ve yapacağım çok teşekkürler

Sorunum çözüldü sanmıştım ancak çözülmedi nedense denemek ve mantığı tam anlamıyla anlamak için sizin dediğiniz gibi yaptım main ve kutuphane dosyalarını oluşturdum maini başka bir klasör de exe haline getirdim ve kutuphane dosyasını sonrasında içine geri attım aynen dediğiniz gibi herşey ama kutuphane dosyasını bulamıyor yine neden olabilir?