Python ile Self-Contained Uygulama Üretme

Burak Tahtacı
2 min readDec 4, 2020

--

Python programlama dili, python yorumlayıcısı (interpreter) üzerinde programlama yapmayı sağlayan bir dildir. Python ile geliştirilen uygulamaların dağıtımı içinse kurulacak makinede halihazırda yüklü bir python yorumlayıcısının olması beklenir. Yani kod çalıştırılmadan önce çalışma zamanı ortamını (runtime environment) doğru bir şekilde ayarlamak gerekir.

Runtime ayarlamaları sırasında pek çok problem meydana gelebilir; hedef sistemlerde farklı işletim sistemleri ve farklı versiyonlar olacağı için python uygulamalarının konteyner içerisine alınması yaygın kullanılan bir yöntemdir.

Photo by Joanna Kosinska on Unsplash

Bu yazıda anlatmak istediğim şey ise biraz daha farklı bir yaklaşım. Python uygulamalarını pyinstaller aracı sayesinde derleyip kendi başına (standalone) çalışabilir bir dosya haline getirmek konusundan bahsedeceğim. Böylelikle oluşturuacağımız çalıştırılabilir dosya (executable file) derlendiği makineye benzer işletim sistemine sahip hedef cihazlarda da çalışabilir hale gelecek ve python yorumlayıcısını kendi içerisinde barındıracaktır.

İlk olarak pyinstaller aracını kurmamız gerekli bunun için aşağıdaki komutu çalıştırabilirsiniz.

pip3 install pyinstaller

Bu yöntem yazdığınız kod ile birlikte gerekli olan yorumlayıcı ve ek kütüphaneleri tek bir dosya içinde toplayacağı için oluşturulacak dosya boyutu artacaktır. Bunu optimize etmek adına upx isimli boyut optimizasyon aracını kullanacağız. Kurabilmek için bu komutu çalıştırmamız gerek

sudo apt-get install upx

Gerekli olan paketleri kurduktan sonra aşağıdaki komutu çalıştırarak main.py dosyamızdan çalıştırılabilir bir dosya elde etmiş oluyoruz.

pyinstaller \
--onefile \
--noconfirm \
--clean \
--log-level=WARN \
--key=@!GizliParolaKoyarsakGuvenliOlur12345!@ \
--strip \
main.py

--

--

Burak Tahtacı
Burak Tahtacı

Written by Burak Tahtacı

TA1KNT / Computer Engineer / RC Hobbyist / Data Science and Machine Learning Lover also interested in Information Security

No responses yet