cPython tam olarak nedir?

Bu arada Pycharm’da derleyici yok. Pycharm’da yorumlayıcıyı tanıtıyoruz.
Yorumlayıcı, dile ait kodları satır satır, sanal makine üzerinde yorumlayan bir programdır. Yani bir python dosyasını çalıştırabilmek için bilgisayarda Python yorumlayıcısının bulunması gerekir.
Derleyici ise, script içindeki kodları, makinenin anlayabileceği türden kodlara dönüştürür. Bir kez derleyici ile bir betik dosyası derlendikten sonra derleyici ile işiniz o dosya için biter, derleme sonucunda oluşan dosya, içinde makine kodları bulunan bir dosyadır.

CPython, standart Python yorumlayıcısıdır. Yani yazdığımız .py uzantılı dosyaların içindeki kodların kabuk ile etkileşime girmesini sağlayan bytecode’larını üretir ve bu kodlar sanal makinede çalıştırılır. Bytecode, makine kodu değildir, sanal makine kodudur.

Cython ise yazdığımız python scriptlerini c diline çeviren bir modüldür.

Cython ile Ubuntu üzerinde basit bir örnek yapalım:

Not: Örneği uygulayabilmek için Cython’un ve gcc’nin yüklenmiş olması gerekir.

# hello.py isimli bir dosya oluşturalım:
# içine aşağıdakini yazalım:
print("Hello World!")

Şimdi önce Cython ile “hello.py” dosyamızı “hello.c” ye dönüştürelim:

Uç birime şunları yazıyoruz:

~$ cython hello.py --embed

hello.c dosyamız oluşmuş olmalı.

https://www.dropbox.com/s/qvsv0pqfig0nq6s/hello.c

Madem bu dosya bir C dosyası, o halde bunu gcc derleyicisi ile derleyebiliriz artık.
Ama ondan önce Python.h gibi header dosyalarının nerede olduğunu bilmemiz gerekiyor.
Bunun için Python kabuğuna giriyoruz ve aşağıdaki kodları yazıyoruz:

from distutils import sysconfig
sysconfig.get_python_inc()

Bu komut şu çıktıyı verdi:

‘/usr/include/python2.7’

Şimdi derleme işlemine geçebiliriz:

~$ gcc -Os -I /usr/include/python2.7 -o hello hello.c -lpython2.7 -lpthread -lm -lutil -ldl

Bu komut sonucunda “hello” isimli, içinde makine kodları bulunan bir dosyamızın oluşması gerekir ve bu dosya uç birimden aşağıdaki gibi çağrılarak çalıştırılabilir:

~$ ./hello
Hello World!
~$ 

Mesela aşağıdaki “hello” dosyasını indirdikten sonra bir text editörü ile açıp içine bakarsanız, söz diziminin oldukça karışık olduğunu görürsünüz.

https://www.dropbox.com/s/8wa6fzbuf8ihu6y/hello?dl=0

Dilerseniz bir Tkinter uygulaması oluşturun, yukarıdaki işlemleri yaptıktan sonra onu da ./<dosya_ismi> şeklinde çalıştırabilirsiniz.

Özet: Python dosyalarını çalıştırabilmek için CPython yorumlayıcısına ihtiyaç vardır (yani Python’ın yüklü olması lazım). Ancak Cython sayesinde, bir python dosyası C dosyasına dönüştürülebilir ve oluşan bu C dosyası gcc ile derlenebilir. Derleme sonucunda oluşan yeni dosya ise, python yüklü olmayan bir bilgisayarda çalıştırılabilir.

Aşağıdaki sitedeki gcc komut seçenekleri umarım faydalı olur: