OKUMA SÜRESİ 03:29

Kendi Python’unu Django’nu paketlerini kendin kur

Düzeltme: 23 Mart 2011, 15:33
Lütfen önce bu yazıyı okuyun!


Sevgili kardeşim Fırat Can Başarır uzunca zamandır bana:

abi, python paketlerini pip’ten kuralım, ports’dan kurmayalım, bu şekilde çok rahat ederiz

diyordu… Peki, haydi yapalım… Gidip Python.org’dan Mac OS için hazırlanmış installer’ı çektik. Kuruluma geçtik, işlemler bitti, süper! python’u kurduk sisteme…

Hemen python’un interactive shell’ine girdik. Yıllardır bitip tükenmek bilmeyen locale sorunları yüzünden ( tarih ve Türkçe harfler ) ilk yaptığım iş shell’de ğ harfine basmak oldu…

BUUUUUUUUUUM!

Türkçe harler çalışmıyor? yani ğ ş ü gibi harflere basınca hata sesi çıkıyor ve saçma sapan karakterler çıkıyor ekrana…

Bunun aynısı macos’la birlikte gelen Nano adlı text editörde de yaşamış, çözümü macports’da bulmuştum. Nano’yu macports’dan kurunca hem versiyon güncellenmiş hem de Türkçe sorunları ortadan kalkmıştı…

Yani koskoca Python.org’dan indirdiğimiz uygulamada bile locale sorunu yaşamak hakikatten komikti… Bunun tahmini 2 sebebi vardı:

  1. macos’la gelen readline kütüphanesinde Türkçe karakter desteği yoktu
  2. python utf-8 desteği ile compile (derleme) edilmemişti!

Bugüne kadar hep macports’tan python kurulumu yaptığımız için hiç bir sıkıntı yaşamamıştık… Hemen macports’un pyton27 ile ilgili ports dosyasına baktık.

depends_lib kısmında, python’u derlemek için gerekecek diğer kütüphaneler listesini gördük. Bunlar:

gettext
zlib
openssl
sqlite3
db46
ncurses
gdbm
bzip2
readline

şeklindeydi. configure.args’a baktığımda; --enable-framework ve --enable-unicode dikkatimi çekti. İşin esas can alıcı kısmı ise unicode ile ilgili olan parametresiydi. Hemen $HOME folder’ıma gidip işe koyuldum. Eğer depends_lib’deki paketler sizde yoksa önce bu paketleri kurun:

sudo port selfupdate # önce paket listesini güncelle
port installed | grep PAKET_ADI # paket zaten kurulumu?
port installed PAKET_ADI # 29 Ocak 2012, Pazar, 20:23 itibariyle paket kontrolü
port search PAKED_ADI # ilgili paketi ara
sudo port install PAKET_ADI # geren paketi kur

Eğer tüm paketler hazırsa python’u derlemeye başlayalım. Hemen http://python.org/download/ adresinden source’u çekelim. Ben bu post’u yazarken kullandığım source buydu

cd $HOME
mkdir .local
mkdir .local/Packages
cd ~/Downloads # Python-2.7.1.tgz buradaysa
tar xvzf http://python.org/ftp/python/2.7.1/Python-2.7.1.tgz

setup.py dosyasında minik bir ayar yapacağız. Dosyayı, kullandığınız text editörü ile açıp aşağıdaki satırları bulun.

add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')

Hemen altına aşağıdaki satırları ilave edin:

add_dir_to_list(self.compiler.library_dirs, '/opt/local/lib')
add_dir_to_list(self.compiler.include_dirs, '/opt/local/include')

Bu sayede, macports’la kurduğunuz kütüphanelerin de kullanılmasını sağlıyoruz. Şimdi derleme işine geçebiliriz.

./configure --enable-unicode=ucs4 --prefix=$HOME/.local --enable-framework=$HOME/.local/Library/Frameworks
make
make install

Derleme işlermleri başarıyla biterse (ki bitmeli) hemen kurulum yaptığınız yere gidip bakın:

cd ~/.local/
ls -al
Applications
Library
Packages
bin

gibi folder’lar görmeniz gerekiyor. Aslında yazıyı yazarken

keşke .local/python diye bir folder açıp, herşeyi o şekilde kursaydım

diye deaklımdan geçirdim. İleride belki Ruby’i ya da başka bir şeyi de kendim kurmam gerekirse karışıklık olmadan yapabilirdim diye düşündüm…

Herşey tamamsa, hemen ENVIRONMENT değişkenlerine ayar yapalım: Bunun için .bashrc ya da .profile ya da ne kullanıyorsanız o dosyayı açıp aşağıdakileri ekleyin:

export PATH=$HOME/.local/Packages/bin:$PATH
export PATH=$HOME/.local/bin:$PATH
export PATH=$HOME/.local/Library/Frameworks/Python.framework/Versions/Current/bin:$PATH
export PYTHONIOENCODING=utf-8

Şimdi sırada easy_install var. Bunun için Setuptools’u kurmamız lazım. Source’u indirdikten ve extract ettikten sonra, klasik python modülü kurma işlemi yapıyoruz:

python setup.py install

İşem bitince hemen kontrol ediyoruz, easy_install’un yeri neresi?

which easy_install

Görmek istediğimiz path, kullanıcı folder’ınızın altında ($HOME)

/.local/Library/Frameworks/Python.framework/Versions/Current/bin/easy_install

gibi olmalıdır.

Eğer herşey yolundaysa hemen pip’i kuralım:

easy_install pip

Kurulum bitince tekrar ENVIRONMENT’a ayar yapmamız gerekiyor:

export PIP_INSTALL_OPTION="--prefix=$HOME/.local/Packages/"
export PYTHONPATH=$HOME/.local/Packages/lib/python2.7/site-packages

Bu sayede, ilgili python paketlerimizi de .local içine alıyoruz. Böylece, ileriede bir gün makineyi yeniden kurduğunuzda ya da başka bir durumda, kasmadan tüm paketlerinizi vs kolayca taşıyabileceksiniz. Şimdi pip ile gereken paketleri kurabiliriz. Benim en çok kullandıklarım:

pip install django ipython south simplejson PIL

pip direk pypi’dan indirdiği için hem paketleri güncellemeniz hem de yönetmeniz çok kolay oluyor. Macports’la ya da Ubuntu’daki aptitude’la bazen sıkıntılar çıkabiliyor. Python paketleri için en rahat çözüm pip oluyor.

Güncelleme: 6 Temmuz 2016

Ne yazıkki burada yazan şeylerle uğraşmadan Homebrew üzerinden: brew install python demek yeterli :)