Cihan Okyay

Feed Rss

virtualenv ve pip üzerine

10.06.2011, Django, pip, Python, virtualenv, by .

İşimde ve kendi projelerimde genelde Django kullanıyorum. Django ile yazılım geliştirirken bir çok üçüncü parti uygulama kurmak gerekebiliyor. Örneğin migration işlemleri için south kurmak gerekiyor. Diyelim ubuntu kullanıyorsunuz ve south ubuntu deposunda var. Veya pip, easy_install gibi python paket sistemleri ile kurulum yapıyorsunuz. Bu durumda bu paketler sistemin geneline kuruluyor. Bu durumun ne gibi sıkıntıları var derseniz, projeye özel değişik versiyonda kütüphaneleri denemek zorlaşıyor. İşte tam bu sırada virtualenv gibi harika bir araç yardımımıza koşuyor. virtualenv kısaca bize özel bir python alanı yaratıyor ve orada yaptığımız kurulumların sadece orada geçerli olmasını sağlıyor. Şimdi ubuntu’da adım adım virtualenv kurulumu ve kullanımını inceleyelim.

Öncesinde sistemimizde easy_install ve pip kurulu değilse bu işlemleri halledelim. Terminalde aşağıdaki komutu vererek paket kurulumlarımızı yapalım.

  1. $ sudo apt-get install python-setuptools python-dev build-essential

Evet kurmamız gereken .deb paketleri tamam. Şimdi pip kurmamız gerekiyor. İsterseniz virtualenv ile easy_install’ı kullanabilirsiniz. Ancak ben pip kullanmayı daha çok seviyorum. Şurada neden pip’in daha güzel olduğunu açıklamışlar. Aşağıdaki komutu işletelim.

  1. $ sudo easy_install pip

pip kurulduğuna göre artık virtualenv’yi pip aracılığıyla kurabiliriz.

  1. $ sudo pip install virtualenv

virtualenv sisteme kuruldu ve sanal python ortamları yaratmamız için bir engelimiz kalmadı. Bir virtual environment (sanal ortam) yaratmak için aşağıdaki gibi bir komut işletmeniz gerekiyor.

  1. $ virtualenv –no-site-packages –distribute example
  2.  
  3. New python executable in example/bin/python
  4. Installing distribute………………………………………………………………………………………………………………………done.
  5. New python executable in example/bin/pythonInstalling distribute
  6. ……………………………………………………………………………………………………………………………done.

Buradaki example ortamımızın ismi. Bunu dilediğiniz gibi verebilirsiniz. Python ortamınız bu dizin içinde şekillenecek. İsterseniz path verebilirsiniz. Benim önerim python_environments gibi bir dizin açıp tüm ortamlarınızı burada bulundurmanız. Düzen iyidir

virtualenv’ı kurduk ancak onu aktif etmeden kullanmaya başlayamıyoruz. Aktif etmek için aşağıdaki yolu izliyoruz.

  1. $ source example/bin/active

Bu komuttan sonra imlecin olduğu bölümün değiştiğini farkedersiniz. Genelde sanal ortamın adı yazar. Bir sorun yoksa artık aktif halde bir sanal ortamımız var. Sanal ortamdan çıkmak için diğer bir deyimle deaktif etmek isterseniz;

  1. (example)~$ deactivate

Python sanal ortamından çıkmış oluyorsunuz böylece. Şimdi sanal ortamımızda istediğimiz paketleri kuralım. Örnek olması açısından Django üzerinden gidelim istiyorum. Django kurmak için pip komutunu aktif edilmiş sanal ortamımız içindeyken yazıyoruz.

  1. (example)~$ pip install Django
  2.  
  3. Downloading/unpacking Django
  4. Downloading Django-1.3.tar.gz (6.5Mb): 6.5Mb downloaded
  5. Running setup.py egg_info for package Django
  6. Installing collected packages: Django
  7. Running setup.py install for Django
  8. changing mode of build/scripts-2.6/django-admin.py from 644 to 755
  9. changing mode of /home/cihann/example/bin/django-admin.py to 755
  10. Successfully installed Django
  11. Cleaning up…

Django başarıyla kuruldu. Şu an Django’nun sadece example sanal ortamında kurulu olduğunu hatırlatalım. Ayrıca farkettiyseniz kurulum yaparken sudo ile yetki almaya vs. ihtiyaç duymadık. Sistem geneline kurulmadığı için bir yetki alma gereği duymuyor. Yazı biraz uzayacak ama virtualenv ile ufak bir Django uygulaması başlatalım istiyorum. Böylece requirements.txt denen dosya ile paket yönetiminede girmiş oluruz. Django artık sanal ortamda kurulu olduğuna göre şu komutu işletiyoruz.

  1. (example)~$ django-admin.py startproject example_django

Bu komutla bir Django projesi oluşturmuş olduk. Artık sanal ortamda pip ile paket kurmayı biliyoruz. Ancak bir çok paket kurmak istediğimizde bunları tek tek kurmak yerine paket listesini çıkarıp bunu bir dosyaya yazıp oradan kurulum ve yönetimi yapabiliriz. Bu dosyanın adı requirements.txt. Django projemizin içine gidelim ve requirements.txt adında bir dosya oluşturalım.

  1. (example)~$ cd example_django/
  1. (example)~/example_django$ touch requirements.txt

requirements.txt dosyamızın içine istediğimiz paketleri yazalım. Örnek olarak şöyle bir dosya ile başlayabiliriz.

South==0.7.3
django-taggit==0.9.2
Markdown==2.0.3

Evet requirements.txt dosyamız hazır. Şimdi nasıl bu paketleri bu dosya üzerinden kuracağımızı görelim.

  1. (example)~/example_django$ pip install -r requirements.txt
  2.  
  3. Downloading/unpacking Markdown==2.0.3 (from -r requirements.txt (line 3))
  4. Downloading Markdown-2.0.3.tar.gz (71Kb): 71Kb downloaded
  5. Running setup.py egg_info for package Markdown
  6. Downloading/unpacking django-taggit==0.9.2 (from -r requirements.txt (line 2))
  7. Downloading django-taggit-0.9.2.tar.gz
  8. Running setup.py egg_info for package django-taggit
  9. Downloading/unpacking South==0.7.3 (from -r requirements.txt (line 1))
  10. Downloading South-0.7.3.tar.gz (70Kb): 70Kb downloaded
  11. Running setup.py egg_info for package South
  12. Installing collected packages: django-taggit, Markdown, South
  13. Running setup.py install for django-taggit
  14. Running setup.py install for Markdown
  15. changing mode of build/scripts-2.6/markdown from 644 to 755
  16. changing mode of /home/cihann/example/bin/markdown to 755
  17. Running setup.py install for South
  18. Successfully installed django-taggit Markdown South
  19. Cleaning up…

Süper! Paketler sanal ortamımıza kuruldu. virtualenv ile gördüğünüz üzere çok rahat bir Python çalışma ortamı kurulabiliyor. Geliştirdiğiniz uygulamayı başka bir sanal ortama taşıyıp orada farklı sürüm kütüphanelerle deneyebilirsiniz. Sanal ortamla işiniz bittiğinde onu silebilirsiniz.

Mutlu kodlamalar (:

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>