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.
sunucuyla oynamalar yapiyordum. Su an blogum yok. Kisa zamanda bir blog ayarlayip oraya tasiyacagim zaten. Surekli virtualenv sorulari geldiginden turkce kaynak olsun diye bunu buraya tasidim. Yani tamamen blogun kapali olmasindan dolayi :)