Herkese merhaba, birden fazla py dosyası içeren bir uygulamayı exeye çevirirken ne yapmalıyım, exe dönüştüreceğim dosyanın içine diğer dosyaların içe aktardığı modülleri yazmalı mıyım, böyle bir uygulamayı başka bir yerde paylaşınca çalışır mı? şimdiden teşekkürler
Elimizde 3 adet py dosyası olsun, birinci.py
, ikinci.py
ve üçüncü.py
.
üçüncü.py isimli dosyanın içeriği:
def function():
print("hello world!")
ikinci.py isimli dosyanın içeriği:
import üçüncü
import time
for number in range(10):
üçüncü.function()
time.sleep(1)
birinci.py isimli dosyanın içeriği:
import ikinci
Bu durumda cmd aracılığıyla pyinstaller --onefile birinci.py
yazarak tüm bunları tek bir exe dosyası haline getirebiliriz. Çünkü pyinstaller, import edilen dosyaları ve modülleri tespit ederek bunları zaten dahil ediyor. Açıklamam ne kadar doğru bilmiyorum ama pratikte böyle.
Exe dosyasının çıktısı:
hello world!
hello world!
hello world!
hello world!
hello world!
hello world!
hello world!
hello world!
hello world!
hello world!
Merhaba, yani sonuç olarak dosyalarımın toplamı 600 satırı geçiyor ve her türlü bu 600 satır ve modüller exeye mi dönüştürülecek? daha geçen gün buraya da yazmıştım 400 satırlık bir dosya 200 mb tuttu. bu çok daha fazla tutar o zaman değil mi?
Boyut hakkında pek bir fikrim yok ama evet, hepsi exe içerisinde toplanmış oluyor.
Boyutu belirleyen tek kriter yazdığınız kod satırlarının sayısı değildir. Dahili ve harici kullandığınız modüller, gömülü görseller, iconlarınız, harici görseller
Ayrıca, programınız ne kadar detaylı bilmemekle birlikte naçizane tavsiyem olabildiğince daha az satır kod yazarak aynı işlevi sağlamak ya da daha az kod ile daha verimli işlevsellik sağlamak. Böylelikle uygulamanızın exe hali çok yüksek boyutlu olmayacaktır.
Daha az satır kod yazmak için neler yapılabilir;
- Tekrar eden işlemler için for döngüsü kullanılabilir.
- Tekrar tekrar kullanılacak aynı verileri tek bir değişkende toplayıp, değişkeni çağırabiliriz.
- Toplu verileri listelere ekleyerek ihityaç duyulan her yerde tek tek kullanmak yerine listeden alabiliriz.
- Aktif çalışan veya etkileşimli çalışan fonksiyonlarınız için en doğru ve en kısa yoldan algoritmalarınızı düzenleyebilirsiniz.
- Uzun modül isimlerini as etiketi ile kısaltabilirsiniz. (
import pyautogui as pya
) (import datetime as dtm
)
Boyutunu azaltmak için upx kullanabilirsiniz. Ayrıca özel bir sebebi olmadıkça onedir kullanın bence. Açılması daha hızlı oluyor. Son olarak yalnızca ana programı exe ye çevirirseniz import ettiğiniz modüller otomatik olarak eklenecektir. Bir yerden bir şeyi import ederken tümünü değil de bir kısmını import edebilirsiniz.