.py Dosyasını .exe Dosyasına Dönüştürme

Bu zamana dek Python hakkında birçok şey öğrendik ve artık ortaya bir ürün çıkarmak isterseniz bunu yapabilirsiniz. Ancak, ürününüzü pazarlarken bunu .py uzantılı bir dosya şeklinde atmak sizce de mantıklı olur mu? Bence olmaz çünkü her kullanıcı yazılım bilmek veya bir yazılımı çalıştırmayı bilmek zorunda değil. Dolayısıyla biz, bu şekildeki görevler için çift tıklayarak farklı bilgisayarlarda da açılabilen ve kodun çalışması için bir alt yapı (kurulum vb.) gerektirmeyen .exe uzantılı dosyalar oluşturuyoruz. Bu yazıda bunu yapmayı öğreneceğiz.

Bunun için pyinstaller isimli bir modül kullanacağız. Eğer bu modülü daha önce kullanmadıysanız bunu, pip install pyinstaller komutunu vererek indirebilirsiniz:

Bu modül bende hâlihazırda yüklü.

Şimdi, .exe dosyasına dönüştürmek istediğiniz bir .py dosyası seçmeniz gerekiyor. Örneğin ben, bir Word dosyasını PDF dosyasına dönüştüren bir Python koduna sahibim ve bunu bir .exe formatına dönüştürmek istiyorum.

Eğer projenizin bir ikonu varsa .ico uzantılı ikonu proje ile aynı klasörde bulundurmak zorundasınız. Örneğin;

Gördüğünüz üzere bahsettiğim Python dosyası ve bizim sitenin ikonu aynı klasörde. Eğer tkinter gibi, GUI tabanlı projeleriniz varsa ve proje içerisinde farklı bir görseliniz varsa onu da aynı klasörde bulundurmak zorundasınız.

Gerekli eşyalarımızı aynı çantaya koyduktan sonra işlemlerimize devam edelim.

Yukarıdaki komutta yazanları tek tek açıklayalım. Zaten pyinstaller, modülümüzün adı iken word2pdf.py isimli dosya, .exe formatına dönüştürülecek dosya oluyor.

Hemen yanındaki --onefile ifadesi, yalnızca bir adet dosyamızın olduğunu ve buna göre bir dönüştürme işlemi yapılacağını ifade eder.

Yaptığınız uygulama GUI tabanlı olsa bile .exe dosyasını çalıştırdığınızda açılan uygulama ile beraber bir terminal de açılacaktır. İşte, o terminalin açılmasına ihtiyacınız yoksa --noconsole ifadesini yerleştirmeniz gerekir. Eğer programınız terminal üzerinden çalışıyorsa zaten onu yazmanıza gerek yoktur.

Sonrasında, .exe dosyasının varsayılan ikonunu değiştirmek isterseniz --icon=<icon adı> şeklinde bir ifade girmelisiniz. Bu noktada .ico uzantılı dosyanızın lokasyonunu belirtmenize gerek yoktur çünkü zaten bütün gereklilikleri aynı çatı altında toplamış olmanız gerekir. Bu, örneğin Brave Browser, Visual Studio Code gibi programların ikonları gibi bir ikondur. Yani bu komut ile, bilgisayarda gözükecek olan ikonun kendisini belirliyorsunuz; birazdan göreceksiniz.

Bu komutu olduğu gibi çalıştırıyorum ve bekliyorum. Bu işlemin süresi, dosyanızın büyüklüğüne ve bilgisayarınızın hızına bağlı olarak değişecektir. İşleminizin tamamlandığını şu şekilde anlayabilirsiniz:

Bu işlemin sonucunda Python dosyanızın ve gerekliliklerin bulunduğu klasöre girdiğinizde karşınıza 3 yeni öğe çıkacaktır. Bunlar sırasıyla build, dist ve <dosya adı>.spec

Bu noktada ihtiyacımız olan tek şey dist klasörüdür:

Eğer dist içerisine girerseniz .exe uzantılı dosyanızın orada olduğunu göreceksinizdir:

Ayrıca dikkat ederseniz --icon=logo.ico şeklinde verdiğimiz .ico dosyası, tkinter uygulamasına özel değil, bu .exe dosyasına da eklendi. Şimdi, bunu çalıştıralım. Bunun için üzerine çift tıklamanız yeterlidir.

Ekran biraz karışıkmış gibi görünebilir ama kırmızı ile işaretlediğim yerlere bakarsanız ikonun, sanki normal bir uygulamaymış gibi geldiğini görebilirsiniz. Bu noktada word2pdf.py yazılımı da gayet güzel bir şekilde çalışıyor ki 542 sayfalık Python dokümanını PDF'e çevirebildik.

İşlemlerimiz bu kadar. Peki, eğer gerçekten büyük çaplı bir projeniz varsa ya da projenizde bir sürü modül eklenmişse bu dosyayı .exe dosyasına nasıl dönüştüreceksiniz?

--onefile olarak verdiğimiz argümanı --onedir olarak ayarlıyoruz ve komutu çalıştırıyoruz. İşlemler tamamlandığında yine build, dist ve word2pdf.spec öğeleri gelecektir. .exe dosyasına erişmek için yine dist içerisine girmeniz gerekir.

--onedir argümanını verdiğiniz zaman dosyanızın ihtiyaç duyduğu her şeyi yüklediğini göreceksiniz. Bu sayede cihazlar arası uyum problemini de ortadan kaldırmış olursunuz. Ancak, "sadece ben kullanayım, 'python word2pdf.py' yazmaktan yoruldum" diyorsanız --onefile argümanını verebilirsiniz; problem olmayacaktır.

.dll dosyalarının ne olduğunu temel anlamda öğrenmek adına şu blogu ziyaret edebilirsiniz: DLL (.dll) Nedir?


Yayınlanma Tarihi: 2023-01-02 20:44:51

Son Düzenleme Tarihi: 2023-01-05 10:05:05