Ahmet AYGÜN

Virtualenv Ile Sanal Python Ortamları

| Comments

Gerek yerel sisteminizde gerekse sunucularınızda birden fazla uygulama bulunduruyorsunuzdur. Çoğunun kendine has bağımlılıkları ya da bazı uygulamaların belirli sürümlerine bağımlılıkları olabilir. Bu gibi durumlarda virtualenv yardımınıza yetişiyor ve sisteminizden izole Python ortamları oluşturmanızı sağlıyor.

Bu sayede Python 2.5 ile 2.7 veya 3 kullanan uygulamalarınızı birbirinden farklı ortamlarda çalıştırabilir ve bir takım sorunların önüne geçebilirsiniz. Veya uygulama bağımlılıklarını doğrudan sisteme kurmak yerine sadece çalışılacak ortama kurabilirsiniz.

kurulum

virtualenv’i easy_install ya da pip ile kolayca kurabilirsiniz.

1
2
$ sudo easy_install -U virtualenv
$ sudo pip install -U virtualenv

ortam oluşturma

Basitçe sanal ortam oluşturmak için:

1
$ virtualenv ortam_adi

Bu komutu çalıştırdığınızda ortam taslağını (gerekli betikler, python ve setuptools) ortam_adi dizini altına kopyalar. Bu ortamı kullanırken kurduğunuz python paketlerini ortam_adi/lib/pythonX.X/site-packages dizini altında bulabilirsiniz.

Eğer setuptools yerine distribute kullanmak isterseniz ortamı oluştururken --distribute parametresini kullanabilirsiniz.

1
$ virtualenv --distribute ortam_adi

Farklı python sürümü kullanarak ortam oluşturmak için:

1
$ virtualenv -p python2.5 ortam_adi

kullanım

Yeni ortamımızı başarıyla oluşturduk, biraz da etkin kullanım adımlarına bakalım isterseniz.

Ortamımızı etkinleştirmek için:

1
2
$ source ortam_adi/bin/activate
(ortam_adi)~$

Ortamı etkinleştirdiğinizde komut istemi satırındaki değişikliği fark edeceksiniz. Bu andan itibaren yaptığınız her kurulum o ortama özel olacak ve sisteminizi etkilemeyecek.

Ortamı pasifleştirip sistem öntanımlı ortamına dönmek için:

1
(ortam_adi)~$ deactivate

Paket kurulumu için doğrudan pip’i ya da easy_install’u kullanabiliriz.

1
(ortam_adi)~$ pip install yolk

Burada örnek olarak yolk paketini verdim, hem küçük bir paket olduğu için hem de işinize yarayabileceği için fark etmenizi istedim. Yolk ortamınızda kurulu python paketlerini görüntülemenizi sağlayan bir araç.

1
(ortam_adi)~$ yolk -l

Bu listede bazı paketlerin sistemden inherit edildiğini göreceksiniz, eğer ortamı tamamıyla sistemden izole etmek isterseniz ortamı oluşturma esnasında --no-site-packages parametresini kullanabilirsiniz.

Sanal ortamımıza kurduğumuz paketlerin sistemi etkilemediğini denemek isterseniz de:

1
2
3
(ortam_adi)~$ deactivate
$ yolk -l
yolk: command not found

pip kullanacaksanız uygulamanız için bir bağımlılık dosyası oluşturup onu da kullanabilirsiniz. Bu özelliği denemek için de requirements.txt isimli bir dosya oluşturup içine birkaç paket yazın ve ardından pip ile yükleyin:

Requirements dosyası
1
2
3
4
Django
http://www.crummy.com/software/BeautifulSoup/download/3.x/BeautifulSoup-3.0.8.1.tar.gz
-e svn+http://django-tagging.googlecode.com/svn/trunk/@154#egg=django-tagging
-e git://github.com/ahmet/django-cart.git#egg=django-cart
1
$ pip install -r requirements.txt

ayarlar

Eğer ortam oluştururken kullandığınız ayarları her seferinde yazmaktan yorulduysanız bir ayar dosyası ile bu işi çözebilirsiniz.

$HOME/.virtualenv/virtualenv.ini
1
2
3
4
5
6
[virtualenv]
distribute = true
no-site-packages = true
extra-search-dir =
    /path/to/dists
    /path/to/other/dists

Şimdilik benden bu kadar, ayarlarınızı detaylandırmak isterseniz virtualenv belgelerine bir göz atın derim.

Comments