Selam… hem python da hemde forumda yeni olarak python hakkında merak ettiklerim var. Kendime yetecek kadar C++ bilen biriyim Türkçe kaynak pek olmadığı için ilerlemeyip biyerde tıkandığım için python öğrnemeye başladım biraz yol kat ettim. Merak ettiğim yaptığım örenklerde dosya hep .py uzantılı ve biz bu programların kodlarını görüyoruz. Artı çalıltırmak için etkieşimli kabuğa ihtiyacımız var. Peki pythonda normal bir program nasıl oluyor olmuyormu yada ?
Yani bir çalıştırılabilir dosyası olan Windows da .exe gibi Linuxda .daf gibi yanılmıyorsam… C++ yazdığınız programlar bir editör ile yazasrınız derleyiicide derler ve elmize bir program çıkar Python da bu nasıl?
Bir diğer sorum Python da neler yapılır. Aslında ağ programlama web programlama masa üstü programların programlandığını oyun yapıldığını biliyorum. Pekii donanım yazılımlar yapılırmı bir C++ gibi bir donanımın sürücüsü yapılır mı? Bir işletim sistemi sıfırdan yapılırmı?
yapılabilir tabiki pyinstaller kullnarak programlamızı derlemek tabiki mümkün.
Ben Linux kullanıcısıyım bunu Linux ta nasıl oluyor. Birde Linux da grafik arayüzü olan programlar nasıl yapılır?
grafik arayüzü için tkinte ,pyqt pek çok kütüphane mevcut linux üzerinde windows için derlemeyi kast ediyorsanız onu bilmiyorum denemedim.
burdan baktığıma göre her platformu destekliyormuş zaten ayrıca kivy ile de cross platform uygulamalar geliştirebilirsiniz.
şurdan daha detaylı bilgi alabilirsiniz. http://www.pyinstaller.org/documentation.html
Kivy? Linux için sormuştum gerçi yaptığınız bir program her işletim sistemine uygun olmasını isteriz dimi… Kivy ne oluyor sanırım ben baya bişey öğrenmem lazım
cross platform uygulama geliştirmenize olanak sağlıyor
Teşekkür ettim baya bişeyler öğrendim Python da soru işaretlerim kalktı gibi… Son soru ozaman derlediği zaman işletim sisteminde Python etkileşim kabuğu olmadan normal bir program gibi programlarımız işletim sisteminde çalışır… Örneğin Windows yazdığımız bir program paketlendiği zam Windows da Python etkileşim kabuğu olmasa da bir c++ ile yazılmış program gibi çalışılır yada Linux da yapılan program çalıştırmak için etkileşim kabuğunu açıp programı ordan çalıştırmaya çalışmayacğız mı oluyor…
gerekli olan bağımlılıklarla birlikte dağıtırsanız tabiki çalışır mesela bazı windows programları bazı kütüphanelere bağımlıdır dll dosyalarına bunlarıda dosya ile birlikte dağıtmalısınız.
İlk etapta Linux da Python öğrenme çalıştırma işlemlerini öğrenmek istiyorum… Evet Windows da program sadece exe dosyasından oluşmaz bir sürü dll dosyası yer alır. Ekstra program dosyaları falan… Öğrenmek isteğimi öğrendim… Python başlarken etkileşim kabuğu sık sık kullanınca bende c++ program oluşturmayacağım sandım… Etkileşim kabuğu program kotlsrımızı kontrol etmek için kullandığımız arayüz oluyor derleme paketleme işlemi ayrı aşama
Python’da işletim sistemi yazamazsınız ne yazık ki. Ancak gerçekten çok güçlü ve kullanımı çok kolay bir dildir. Açıkçası C++ mı yoksa Python mı diye bir soru yöneltilmiş olsa düşünmeden Python derim ben.
Bende ondan yöneldim c++ ileri seviye türkçe kaynak bulmak zor imkansız da diyebilirim bir nokta da tıkandım… C++ de yazacağın birkaç satırlık basit bir uygulamayı Python da bir satır ile yspıprsun… Kıyaslamak nekadar doğru olur o tartışılır… Programlama dilleri kalem gibidir örnek bir dilekçe yi kurşun kalemle yazamazsınız aynı şekilde bir portre yi dolma kalemle çizmek nekadar mantıklı olur… C++ donanım tarzı program yapmak için mecbursun sürücü yazmak yada işletim sistemi yapmak oyun modülü yapmak vs… Gerçi Pythonda da oyun yapılıyormuş okuduğum kadarıyla… Yada c# c++ yapabildiğinizi yapamazsınız görsellik için geliştirilen bir dil c++ Android uygulaması yaparken c# imkansız Java ile yine Android uygulaması yaparken Python kadar sade değil… Gibi gibi :))
Merhaba.
Linux ortamında da py uzantılı dosyaları pyinstaller ile exe dosyalarına dönüştürebilirsiniz. Pyinstaller’ın Linux’de kullanımı Windows’a göre biraz daha farklı:
Önce wine indirmeniz gerekiyor.
sudo apt-get install wine-stable
Daha sonra python’ın sitesinden bir tane Python msi dosyası indirmek gerekiyor.
Örn:
https://www.python.org/ftp/python/3.4.4/python-3.4.4.msi
Sonra bu sürüm wine’a kurulur:
wine msiexec /i python-3.4.4.msi /L*v log.txt
Sonra kurulan dizine girilir:
cd ./Python34
Sonra pyinstaller bu sürüme kurulur.
wine python.exe Scripts/pip.exe install pyinstaller
Bu işlemler yapıldıktan sonra artık aşağıdaki dizinde derleme işlemleri yapılır.
~/.wine/drive_c/Python34
Eğer Python programınızda 3. kullanıcılar tarafından yazılmış kütüphaneler kullanıyorsanız, bu kütüphaneleri bir de wine’ın içine kurmak gerekir.
Örn:
Diyelim python3 kullanıyorsunuz. Normalde, bir kütüphaneyi yüklemek için şu komutlar yazılır.
pip3 install pyinstaller
Python2 için bu ;
pip install pyinstaller
Wine’ın içindeki python’a bir kütüphane yüklemek için az önce yazdığım komut yazılıyor:
# ~/.wine/drive_c/Python34 dizinindeyiz.
wine python.exe Scripts/pip.exe install pyinstaller
Derleme işlemi ise Windows üzerinde normalde aşağıdaki gibiyken:
# test.py'nin bulunduğu dizinde terminal açtığımızı varsayalım
pyinstaller seçenekler test.py
Linux’de de aşağıdaki gibidir:
# test.py'yi ~/.wine/drive_c/Python34 dizinin içine yerleştirmiş olalım.
wine ./Scripts/pyinstaller.exe seçenekler test.py
Seçeneklerle ilgili Pyinstaller’ın dökümanına göz atabilirsiniz.
Ellerine sağlık hocam… Sen ne etmişsin sayende baya şey öğrendim… Linux içinde derleme yapmam mümkün dime aynı yolla… Yani aynı programı Linux için de derlemek mümkün…
Linux’de derleme işlemini cython aracılığı ile yapabilirsiniz.
Python2 için:
sudo apt-get install cython
Python3 için:
sudo apt-get install cython3
Sonra test.py dosyası bir test.c dosyasına dönüştürülür (derlenir):
cython3 test.py --embed
Sonra da test.c gcc derleyicisiyle derlenebilir:
gcc -Os -I /usr/include/python3.5m -o test test.c -lpython3.5m -lpthread -lm -lutil -ldl
Bu işlemlerden sonra test isimli derlenmiş bir python programı oluşur.
Sağlasınız arkadaşlar Python da kafam takılan soru işaretlerini kaldırdınız teşekkür ederim… Neden direk Python kodu derlemiyoruz c ye çevirip c yi derliyoruz.?
Aşağıdaki linklerin ilkinde, compilers kısmında derleyici adları ve kısa açıklamalar yer alıyor.
Kaynak: https://wiki.python.org/moin/PythonImplementations
Compilers
These compilers usually implement something close to Python, although some compilers may impose restrictions that alter the nature of the language:
2c-python - a static Python-to-C compiler, apparently translating CPython bytecode to C
Compyler - an attempt to “transliterate the bytecode into x86 assembly” (now abandoned)
Cython - a widely used optimising Python-to-C compiler, CPython extension module generator, and wrapper language for binding external libraries. Interacts with CPython runtime and supports embedding CPython in stand-alone binaries.
GCC Python Front-End - an in-progress effort to compile Python code within the GCC infrastructure
Nuitka - a Python-to-C++ compiler using libpython at run-time, attempting some compile-time and run-time optimisations. Interacts with CPython runtime.
Pyc - performs static analysis in order to compile Python programs, uses similar techniques to Shed Skin
Shed Skin - a Python-to-C++ compiler, restricted to an implicitly statically typed subset of the language for which it can automatically infer efficient types through whole program analysis
unPython - a Python to C compiler using type annotations
VOC - A transpiler that converts Python bytecode into Java bytecode.
Neden C ceviriyoruz sorusuna soyle yanit vereyim her programlama dili sonucda 01 yani makina koduna donusuyor C ile yazidigmiz kodu derlediyimiz zamanda bu defa C kodlari Assambly diline sonrasinda 01 diline donusuyor neden direk Assamblu ile diyilde kodlarimizi C ile yaziyoruz o zaman sorusuyla ayni sizin sorunuz. Derleyiciler C kodunu Assamblu diline donusture biliyor o yuzden bu yontem daha kolay(python==>C==> Assambly==>01) direk Python kodlarini Assambly diline ceviren bir derleyici olursa o zaman C cevirmeye gerek kalmazdi(bildiyim kadariyla yok)…Derleyici demek bir programlama dilini baska bir dile ceviren demek butun derleyiciler bu isi yapar C derleyicisi Assambly diline cevirir Assambly-da sonda 01 makina koduna donusuyor isterseniz siz direk 01 makina kodu yazarakda program yaza bilirsiz fakat python-da bir satirlik kod 01 cevirirsen 100 satir ola bilir.O yuzden bu isler kolaylastirici gibi calisiyor sen 01 cevirmene gerek yok derleyici bunu yapiyor
Teşekkür ederim… Ben diğer diller gibi düştüğüm için garibe geldi c de c++ derleyici kotları makina diline çeviriyor ya Python da o mantıkla hareket eden dil sandım… Java da benzer yöntem ama orada zaten programı Java run time çalıştırdığı için durum daha farklı galiba neyse herşey için teşekkür ederim… Ben boks maçına devam edeyim :))
Python’ın sanal makinesi ve standart yorumlayıcısı CPython’dır, C diliyle yazılmıştır. Belki gördünüz belki sonra göreceksiniz, py dosyaları dışında pyc isimli başka dosyalar da var. Bunların içinde bytecode’lar bulunur. Mesela test.py isimli bir dosyanın yanında bir de test.pyc isimli bir dosya oluşmuş görebilirsiniz. Bu dosyayı da çalıştırabilirsiniz…
Farklı dillerde yazılmış başka Python dili yorumlayıcıları/uygulayıcıları var:
IronPython (Python running on .NET)
Jython (Python running on the Java Virtual Machine)
PyPy (A fast python implementation with a JIT compiler)
Stackless Python (Branch of CPython supporting microthreads)
MicroPython (Python running on micro controllers)
Merhaba.
Arkadaşlar tüm sorularınıza cevap vermiş. Yine de bir not düşmek istedim. Programlama dilleri çalıştırılmaları bakımından ikiye ayrılır: Derlenen diller ve yorumlanan diller. C++ bir derlenen dildir. Çalıştırmak için önce derleyip üstünde çalıştığınız işletim sistemine özgü makine kodu elde edersiniz ve bunu doğrudan çalıştırabilirsiniz. Python’da ise bir yorumlayıcı programınızı deyim yerindeyse satır satır okur ve işletim sisteminin anlayacağı formata çevirip bu satırları anlık olarak çalıştırır. Yukarıda bahsedildiği gibi Python programları derlenebilir de. Sonuçta derlenebilen bir dil olan C ile yazılmış bir dil Python. Derlemenin ve yorumlamanın birbirlerine göre avantaj ve dezavantajları var. Örneğin; büyük projelerde derleme işlemi uzun sürebildiği için hata ayıklama süreci sancılı bir sürece dönüşebilir. Ancak derlenen bir program yorumlanan bir programa göre çok daha hızlı olacaktır. Yorumlanan bir programda derleme işlemi olmadığı için hata ayıklama süreci çok daha hızlı işleyebilir. Ancak aradaki yorumlayıcı programın daha yavaş olmasına sebep olur. Bu avantaj ve dezavantajlar artırılabilir. Açıkçası bu konuda tek bir en iyi yok; projenizin gerekliliklerine göre en avantajlı olanı seçmelisiniz.
İyi çalışmalar.