Virtualenvwrapper [Turkish]

virtualenvwrapper, virtualenv için tamamlayıcı bir eklentidir (extension). Bir çok virtualenv işini daha rahat yapabilmemize olanak tanır. Özelliklerini sıralamak gerekirse;

  • Tek bir yerden sanal ortamlarınızı yönetmenizi sağlar. (NOT: Bazı yerlerde virtual environment yazmak yerine sanal ortam kelimelerini kullandım.)

  • Sanal ortamlarınızı yönetmenizi sağlayan bir wrapper görevi görür. (oluşturma, silme, kopyalama gibi)

  • Tek komutla sanal ortamlar arasında geçiş yapabilmenizi sağlar.

  • Özelleştirebileceğiniz hook dosyalari ile bir çok operasyonu yönetebilirsiniz. (Daha detaylı olarak bahsedilecek)

Dilerseniz şimdi kurulum nasıl olur onu görelim.

İlk olarak pip aracılığıyla sisteme virtualenvwrapper kuruyoruz. Tabi daha önce sisteminizde virtualenv ve pip olduğunu varsayıyorum.

sudo pip install virtualenvwrapper

virtualenvwrapper kurulduktan sonra kullanabilmek için bir kaç adımı izlememiz gerekiyor. Şu adımları takip ediyoruz;

export WORKON_HOME=~/.virtualenvs

mkdir -p $WORKON_HOME

source /usr/local/share/python/virtualenvwrapper.sh

İlk satırda sanal ortamlarımızın yönetileceği dizini ayarlıyoruz. Ben .virtualenvs isimli bir dizinde tutuyorum sanal ortamlarımı. Siz dilerseniz herhangi bir yeri gösterebilirsiniz.

Sonraki komut bu ayarladığımız yeri oluşturmamıza yarıyor.

En son olarak source komutuyla virtualenvwrapper.sh dosyasının yönergelerini kullanarak sistemimizde virtualenvwrapper'ı bir nevi harekete geçirmiş oluyoruz.

Bu adımlar başarıyla tamamlandıktan sonra bir sanal ortam yaratmayı deneyelim.

$ mkvirtualenv testenv

New python executable in testenv/bin/python
Installing setuptools............done.
Installing pip...............done.
virtualenvwrapper.user_scripts creating /Users/cihann/.virtualenvs/testenv/bin/predeactivate
virtualenvwrapper.user_scripts creating /Users/cihann/.virtualenvs/testenv/bin/postdeactivate
virtualenvwrapper.user_scripts creating /Users/cihann/.virtualenvs/testenv/bin/preactivate
virtualenvwrapper.user_scripts creating /Users/cihann/.virtualenvs/testenv/bin/postactivate
virtualenvwrapper.user_scripts creating /Users/cihann/.virtualenvs/testenv/bin/get_env_details

testenv adında sanal ortamımızı oluşturmuş bulunmaktayız. Artık pip aracılığıyla istediğimiz paketleri kurabiliriz.

(testenv)$ pip install Django

Downloading/unpacking Django
Downloading Django-1.4.tar.gz (7.6Mb): 7.6Mb downloaded
Running setup.py egg_info for package Django

Installing collected packages: Django
Running setup.py install for Django
changing mode of build/scripts-2.7/django-admin.py from 644 to 755

changing mode of /Users/cihann/.virtualenvs/testenv/bin/django-admin.py to 755
Successfully installed Django

Django'yu testenv sanal ortamına kurduk. Kolayca o sanal ortamda paketlerin barındırıldığı dizini görüntüleyebiliriz.

(testenv)$ lssitepackages

Django-1.4-py2.7.egg-info   easy-install.pth            setuptools-0.6c11-py2.7.egg
django                      pip-1.1-py2.7.egg           setuptools.pth

Eğer bir sanal ortamı silmek istersek rmvirtualenv komutunu kullanabiliriz. Ancak bir sanal ortamı silmeden önce o ortamdan çıkmalısınız. Yani aktive durumda olmamalı sileceğiniz sanal ortamınız.

(testenv)$ deactivate

$ rmvirtualenv testenv

Sanal ortamlar arasında geçiş yapabilmek veya istediğimiz birini aktive etmek için workon komutunu kullanıyoruz. Ayrica sanal ortam ismi vermeden workon komutunu kullanırsanız, sisteminizdeki ortamları listeyebilirsiniz.

(testenv)$ mkvirtualenv test2

(test2)$ workon

amazon-works
begitim
bilgi
bilgiegitim
blog
default
deneme
django-social-auth
django-userena
example
kodlasana
newstest
papi
pyist.net
radpress
tattoo
tdddjango
test
test2
testenv
watcher

Gördüğünüz gibi test2 adındaki sanal ortamı oluşturduğumda test2 aktif duruma geçti. Tekrar workon testenv diyerek testenv ortamına geçiş yapabilirim. Ayrıca workon komutunu tek başına kullanarak makinemdeki sanal ortamları listelemiş oldum.

(test2)$ cdvirtualenv

(test2)$ ~VIRTUALENV pwd

/Users/cihann/.virtualenvs/test2

cdvirtualenv komutunu kullanarak o an aktif olan sanal ortamın bir nevi yönetim dizinine gittim. İkinci satırda görüldüğü gibi pwd komutuyla hangi dizinde olduğum açıkça görülüyor.

Bu dizin içinde bin, include ve lib adında üç adet dizin bulunmakta. bin dizini altında daha önce bahsettiğim özelleştirilebilen hook dosyaları bulunmakta. Bir örnek vererek açıklamaya çalışayım. Diyelim testenv ortamını aktif ettiğiniz anda çalışmasını istediğiniz bir betik veya komut var. Bu yönergeleri bin dizini altında postactivate dosyasını düzenleyerek gerçekleştirebiliyoruz.

#!/bin/zsh
# This hook is run after this virtualenv is activated.

cd ~/workspace/

postactivate dosyasına basitçe aktif olduğu an ~/workspace dizinine gitmesini söyledik. İhtiyaçlarınıza ve hayal gücünüze göre çeşitli betikler yazabilirsiniz.

postactivate'in yanında postdeactivate, preactivate ve predeactive gibi çeşitli hook dosyaları bulunmakta.

Böylece virtualenvwrapper hakkında biraz fikir edinmenize ve Python ile yazılım geliştirirken size kolaylık sağlayacak bu araca başlama vesilesi olabildiysem ne mutlu bana. Bir sonraki yazıda görüşmek üzere.

İyi çalışmalar.