Virtual Environment Nedir? (Python)
Virtual Environment farklı projeler için ayrı ayrı kütüphane kurulumlarını yönetmenize yardımcı olur. Esasen “sanal, izole” bir Python ortamı oluşturmanıza ve bu sanal ortama istediğiniz kütüphaneleri diğer sanal ortamlardan bağımsız bir şekilde kurmanıza izin verir. Projeleriniz arasında geçiş yapmak istediğinizde, kolaylıkla yeni bir sanal ortam oluşturabilirsiniz ve bunun sayesinde diğer sanal ortamlardaki kurulu kütüphaneleri bozma, değiştirme konusunda endişelenmenize gerek kalmaz. Örneğin, yeni bir sanal ortam oluşturduğunuzda bu ortamdaki kütüphaneler sizin ana bilgisayarınızdaki ve diğer sanal ortamlardaki kütüphanelerden bağımsız olur. Bunu aşağıdaki fotoğraftan görebilirsiniz:
Eğer (Windows’ta) cmd’yi açıp (Linux veya MacOS’ta terminal) “pip list” komutunu girerseniz mevcut geliştirme ortamındaki yüklü olan Python kütüphanelerini görebilirsiniz. Soldaki kısım bizim bilgisayarımızdaki yüklü kütüphaneler, sağdaki kısım ise sanal ortam içindeki yüklü kütüphaneler.
Venv ve Virtualenv “Virtual Environment” kelimelerinden türetilmiştir ve sanal ortam oluşturmamızı sağlayan araçların adlarıdır. Bunların asıl amacını her proje için diğer projelerden bağımsız bir ortam oluşturmak olarak özetleyebiliriz. Bu makalede kendimize yeni bir sanal ortam nasıl kurabileceğimizi ve nasıl kullanabileceğimizi anlatmaya çalışacağım.
Peki Neden Buna İhtiyaç Duyalım?
- Her bir Python projesini diğer projelerden bağımsız hale getirmek için,
- Bir kütüphanenin farklı versiyonlarını (sürümlerini) hızlı ve kolay bir şekilde kullanabilmek için,
- Bir proje için farklı Python versiyonlarını hızlı ve kolay bir şekilde kullanabilmek için,
- Sıklıkla yaşanan kütüphane hatalarını çözmek için,
ihtiyaç duyabilirsiniz.
Venv Nasıl İndirilir?
Python3.3 ve üstü versiyonlarda kurulu olarak gelmektedir. Eğer daha aşağı bir Python sürümüne sahipseniz Python3.3 veya üstü bir sürüm indirip daha sonra venv ortamını sizdeki yüklü Python versiyonuna göre ayarlayabilirsiniz.
Ancak biz aşağıdaki indirmeyi yaparak varsayılan olarak gelen venv aracı yerine daha fazla işlevi olan virtualenv aracını indireceğiz.
- pip install virtualenv
Linux’te veya MacOS’ta ise ilave olarak şunu çalıştırmalısınız:
- pip3 install virtualenv
Venv Nasıl Aktifleştirilir-Deaktifleştirilir?
Windows İçin:
2 Yöntem var. Birincisi varsayılan olarak gelen venv aracını kullanıp oluşturmak.
- python -m venv <klasör adı>
bu işlem sonucu sizin verdiğiniz klasör adıyla bir klasör oluşturacaktır. Şimdi yapmanız gereken ise:
- .\<klasör adı>\Scripts\activate.bat
bu işlem venv’yi aktif etmenizi sağlayacaktır. Aktif olduğunu anlamak için ise satırın en solundaki, parantez içinde, verdiğiniz klasör adını görmek olacaktır:
İlave olarak klasör adını “venv” olarak da verebilirsiniz. Bu durumda venv adıyla bir klasör oluşturacaktır.
Şimdi gelelim 2. Yönteme, bu yöntem bize daha fazla imkan sunmakta o yüzden sizin de bunu kullanmanızı tavsiye ederim. Bu yöntemde ise yapmamız gereken:
- virtualenv <klasör adı>
Linux İçin:
- python3 -m venv <klasör adı>
Eğer bu işe yaramazsa bunu deneyin:
- python -m venv <klasör adı>
Ancak biz virtualenv aracının bize daha fazla imkan sağlamasından dolayı virtualenv aracını kullanacağız. Eğer yukarıdaki komutlar hata verdiyse önemsemeyin, bu araç çalışıyorsa devam edebilirsiniz.
virtualenv aracını kullanarak sanal ortam oluşturmak için:
- virtualenv <klasör adı>
Sanal ortamı aktifleştirmek için:
- source <klasör adı>/bin/activate
Ek olarak eğer aktifleştirme işlemini daha genel olarak görmek istiyorsanız, Python’un kendi sitesinden alınan fotoğraf:
<venv> olarak belirtilen kısımları <klasör adı> olarak isimlendirdim. Bir farkı yoktur.
Deaktifleştirme — Normal Duruma Dönme
Yukarıdaki işlemleri sorunsuz olarak yaptıktan sonra sanal ortama girmiş olacaksınız. Ancak bu sanal ortamdan çıkmak isteyebilirsiniz. Eğer cmd (veya terminali) kapatırsanız direkt olarak sanal ortamdan çıkacaktır. Ama eğer cmd’yi veya terminali kapatmadan sanal ortamdan çıkmak istiyorum diyorsanız basit bir komutla bu sanal ortamdan çıkabilirsiniz:
- deactivate
NOT: Deaktif ettikten sonra sanal ortam içindeyken yüklemiş olduğunuz hiçbir modülü-kütüphaneyi kullanamazsınız. Onlar sadece o sanal ortama özgüdür. Ancak istediğiniz zaman o ortama bir daha girebilirsiniz.
NOT: Cmd’yi veya Terminali kapattığınızda otomatik olarak sanal ortamdan çıkacaktır.
Virtualenv Parametreler:
Şimdi virtualenv aracı ile sanal ortam oluştururken faydalı olan parametrelerden bahsetmek istiyorum. Parametreler size isteğinize göre farklı işlevler sunarlar. Örneğin help (yardım) kısmını açmak için genelde kullandığınız programın adı (örn. virtualenv) ve ardından --help veya -h koyarak yardım kısmını açabilirsiniz. Şuan aslında 2 parametre öğrendiniz ama ben işinize muhtemelen yarayacak birkaç parametre daha göstermek istiyorum:
-h veya --help, Bu parametre help (yardım) kısmını görmenizi sağlar.
--system-site-packages , Bu parametre bilgisayarınızda yüklü olan kütüphaneleri oluşturacağınız sanal ortama dahil etmenizi sağlar
-p veya --py, Bu parametre kullanacağınız Python’u belirlemenizi sağlar (python2.7, python 3.5 gibi). Bu parametreyi yazdıktan sonra kullanacağınız python sürümünün tam yolunu belirtmelisiniz.
Muhtemelen en çok işinize yarayacak parametreler bunlardır. Ancak:
virtualenv -h, veya virtualenv --help komutuyla daha fazla bilgi edinebilirsiniz.
İlave kısım (Toollarda - Araçlarda Sorun yaşayanlar için):
Eğer indirdiğiniz bir tool/araç kütüphane hatası veriyor ise (örneğin: no module named pyinotify), ve siz verdiği hatadaki kütüphaneyi indirmeniz halinde dahi bu sorun devam ediyorsa yukarıda anlattığımız şekilde sanal ortam oluşturup gerekli kütüphaneleri teker teker indirerek bu sorunu çözebilirsiniz. Ancak kullandığınız tool/aracın hangi Python sürümü için çalıştığını bilmeniz lazım. Eğer kullandığınız tool python2 sürümü içinse -p parametresi ile bilgisayarınızda yüklü olan python2'nin yolunu belirtmeniz lazım (Linux ve MacOS’ta which python, which python2 veya which python2.7 yazarsanız (eğer yüklüyse) size tam yolunu verecektir. bunu -p parametresinden sonra eklemelisiniz). Bu işlemlerden sonra sanal ortamı aktif edip hata verdiği kütüphaneleri tekrar indirmeyi deneyin. Büyük ihtimalle sorununuz çözülecektir.
Eğer -p parametresi belirtmezseniz muhtemelen sanal ortamın kullandığı Python sürümü Python3 olacaktır.