Virtualenv Nedir ? Ne İşe Yarar ?

Gringox

Yeni üye
15 May 2016
41
0
grin.py
Mesela Django nun 1.5 sürümü ile bir uygulama yazdınız. Uygulamanızı ve Django'nun 1.5 sürümünü virtualenv yardımıyla bir sanal ortama yükleyerek, uygulamanızı sistemin geri kalanından soyutlayabilirsiniz.

Böylece mesela ilerde uygulamanızı Django'nun 1.6 sürümüne güncellemek istediğinizde, Django 1.6 için de ayrı bir sanal ortam oluşturarak, 1.5 sürümü ile yazdığınız uygulamayı bozmadan programınızı 1.6 sürümüyle test etme imkanına kavuşursunuz. Eğer virtualenv olmasaydı, sistem geneline kurduğunuz Django 1.5 sürümünü güncellemek istediğinizde, uygulamanızın yeni sürümle çalışmaması halinde uygulamanızı riske atmış ve durduk yere başınızı ağrıtmış olacaktınız.


Bu anlattıklarım ilk anda mantıklı gelmemiş olabilir. Ama virtualenv'i kullandığınızda ne işe yaradığınız daha iyi anlarsınız.

Virtualenv adlı paketi kullanabilmek için öncelikle bu paketi sistemimize kurmamız gerekiyor. Bunun için hem Windows'ta hem de GNU/Linux'ta şu komutu veriyoruz:


Kod:
pip install virtualenv

Virtualenv'i kurduktan sonra ilk sanal geliştirme ortamımızı oluşturalım. Ortamımızın adı 'blog' olsun.

Yine hem Windows'ta hem de GNU/Linux'ta şu komutu veriyoruz:

Kod:
virtualenv blog

Bu komut Windows ve GNU/Linux'ta, kullanıcı adının bulunduğu dizin altında blog adlı bir dizin oluşturur. Şimdi bu dizini açıp biraz inceleyin. Göreceğiniz gibi, bu tam anlamıyla bağımsız bir Python geliştirme ortamıdır.

Yalnız burada şuna dikkat edin: Bu bağımsız sanal ortam, virtualenv paketini hangi Python sürümüne kurduysanız o Python sürümünü temsil eder. Dolayısıyla virtualenv'in amacı size farklı Python sürümlerini kontrol etme imkanı sunmak değildir. Bu aracın amacı, projeleriniz için, sistemin geri kalanından soyutlanmış bir ortam oluşturarak, bu projelerinizde kullanacağınız kütüphaneleri ve ek modülleri bu sanal/soyutlanmış ortam içine kurmanızı sağlamaktır. Böylece bu sanal ortam içine kurduğunuz uygulamalarınız ne sistemin geri kalanını etkiler, ne de sistemin geri kalanından etkilenir.


Kaldığımız yerden devam edelim.

'blog' adlı ortamımızı oluşturduktan sonra, bu sanal ortamı etkinleştirmemiz gerekiyor.

'blog' adlı ortamımızı oluşturduktan sonra, bu sanal ortamı etkinleştirmemiz gerekiyor.

Windows'ta bu işi şu komutla yapıyoruz:


Kod:
blog\Scripts\activate

GNU/Linux'ta ise şu komutla:


Kod:
source blog/bin/activate

Bu komutları verdikten sonra şöyle bir görünüm elde edeceksiniz:


Kod:
(blog) C:\Users\neo>

Veya:


Kod:
(blog) /home/neo>

Burada, parantez içinde gördüğünüz 'blog' ifadesi, size hangi sanal ortamın etkin durumda olduğunu gösteriyor. Görünüşe göre, blog adlı uygulamamızı barındıran sanal ortamı başarıyla etkinleştirmişiz.

İşte bu ortamı etkinleştirdikten sonra, kuracağımız bütün modüller sistem genelindeki Python'a değil, bu sanal ortam içine kurulacaktır. Mesela, sanal ortamımız etkin durumda iken, Django adlı paketi kuralım:


Kod:
pip install django

Bu komut, Django paketini blog/Lib/site-packages dizinine kuracaktır. Bu şekilde Django kurulumunu sistemin geri kalanından soyutlamış olduk. Böylece bu sanal ortam dışına kuracağınız Django paketindeki değişiklikler sanal ortam içindeki Django paketini etkilemeyecektir. Aynı şekilde sanal ortam içindeki Django paketi üzerindeki değişiklikler de sanal ortam dışındaki Django paketini etkilemez. Eğer yazacağımız blog uygulaması için ihtiyacımız olan başka paketler/modüller de varsa aynı şekilde onları da bu sanal ortam içine kurabiliriz.

activate komutuyla etkinleştirdiğiniz sanal ortamdan çıkmak için deactivate komutunu kullanabilirsiniz..

Kod:
blog\Scripts\deactivate

veya:

Kod:
source blog/bin/deactivate

Peki bütün bunların bize ne faydası var? Niye böyle bir zahmete giriyoruz.


iyelim ki, yukarıda tarif ettiğimiz blog uygulamasını Django'nun 1.5 sürümüyle yazdınız ve uygulamanız için ayrıca başka modüllerin çeşitli sürümlerini de kullandınız. İleride bir de Django'nun 1.6 sürümünü kullanarak bir forum uygulaması yazmak isterseniz, 'forum' adlı yeni bir sanal ortam oluşturabilir, Django 1.6'yı oraya kurabilir ve forum uygulamanızı bu ortam içinde geliştirebilirsiniz. Böylece 'blog' ve 'forum' uygulamaları birbirinden etkilenmez ve siz de birden fazla Django sürümünü aynı bilgisayar üzerinde kullanabilirsiniz. Eğer virtualenv olmasaydı sistem geneline kurduğunuz Django 1.5 sürümünü hem blog hem de forum için kullanmak zorunda kalırdınız. Bu Django sürümünü (veya projede kullandığınız başka modül veya paketleri) bilerek veya bilmeyerek güncellediğinizde, eğer yeni sürüm ile eski sürüm arasında uyumsuzluk varsa, forum veya blog uygulamalarınızı çalışamaz hale getirme riski almış olacaktınız. Ama virtualenv paketi ile farklı Django sürümlerini birbirinden soyutladığınız için, forum uygulamasını etkilemeden, blog için kullandığınız Django sürümünü güncelleyebilirsiniz.


Umarım açıklayıcı olmuştur..
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.