İPUCU

Python Artificial Intelligence’da en çok kullanılan dildir ve gerekli dökümanların paylaşım alanlar burada paylaşılmaktadır.

Seçenekler

Virtualenv Nedir ? Ne İşe Yarar ?

Gringox - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
05/2016
Nereden:
grin.py
Mesajlar:
41
Konular:
11
Teşekkür (Etti):
0
Teşekkür (Aldı):
7
Ticaret:
(0) %
07-05-2017 13:20
#1
Virtualenv Nedir ? Ne İşe Yarar ?
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..
b0mb - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
03/2017
Nereden:
İzmir
Yaş:
17
Mesajlar:
471
Konular:
64
Teşekkür (Etti):
143
Teşekkür (Aldı):
221
Ticaret:
(0) %
07-05-2017 14:02
#2
Bak işte güzel bir konu, ellerine sağlık. Çok kullanışlı
Gringox - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
05/2016
Nereden:
grin.py
Mesajlar:
41
Konular:
11
Teşekkür (Etti):
0
Teşekkür (Aldı):
7
Ticaret:
(0) %
07-05-2017 14:19
#3
Alıntı:
b0mb´isimli üyeden Alıntı Mesajı göster
Bak işte güzel bir konu, ellerine sağlık. Çok kullanışlı
Sağol rica ederim. b0mb.

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı