Python projelerinde sıkça karşılaşılan sorunlardan biri, farklı projelerin farklı bağımlılıklara ihtiyaç duymasıdır. Örneğin, bir projede Django 3.2
kullanırken, başka bir projede Django 4.0
kullanmanız gerekebilir. Bu gibi durumlarda bağımlılıkların karışmasını önlemek için virtualenv gibi araçlar devreye girer.
Bu yazıda virtualenv'in ne olduğunu, neden kullanıldığını, nasıl kurulup kullanıldığını ve alternatiflerini ele alacağız. Ayrıca, birkaç mini örnekle konuyu pekiştireceğiz.
Virtualenv, Python projeleri için izole bir çalışma ortamı oluşturmayı sağlayan bir araçtır. Bu izole ortam sayesinde, projelerin bağımlılıkları birbirinden bağımsız tutulur ve sistem genelindeki Python kurulumuna müdahale edilmez.
Virtualenv, pip
ile kolayca kurulabilir:
pip install virtualenv
Bir proje klasörüne geçerek aşağıdaki komutu çalıştırın:
virtualenv venv
Bu komut, proje dizininde venv
adında bir klasör oluşturur. Bu klasör, izole edilmiş Python ortamını barındırır.
Ortamı aktifleştirmek için:
venv\Scripts\activate
source venv/bin/activate
Aktif bir ortamda, terminalde ortamın adı görünecektir:
(venv) user@machine:~$
Artık bu ortamda çalışırken bağımlılıkları yükleyebilirsiniz:
pip install requests
Ortamdan çıkmak için:
deactivate
Python 3.3 ve sonrasında gelen venv
modülü, virtualenv’e benzer bir şekilde çalışır:
python -m venv myenv
venv
, virtualenv'in temel işlevlerini yerine getirir ancak bazı ek özelliklerden yoksundur.
Conda, yalnızca Python değil, diğer diller için de izole ortamlar oluşturabilir. Özellikle veri bilimi projelerinde sıkça tercih edilir.
conda create -n myenv python=3.9
conda activate myenv
Pipenv hem bağımlılık yönetimi hem de sanal ortam oluşturma işlevlerini bir araya getirir.
pip install pipenv
pipenv install requests
mkdir my_project
cd my_project
virtualenv venv
source venv/bin/activate
pip install flask
pip freeze > requirements.txt
deactivate
Bu adımlar, bir Flask projesi için bağımlılıkları izole bir ortamda kurar ve bağımlılıkları requirements.txt
dosyasına kaydeder.
python -m venv myenv
source myenv/bin/activate
pip install django
Bu örnekte, venv
modülü kullanılarak bir Django projesi için izole bir ortam oluşturulmuştur.
Bir veri analisti olduğunuzu düşünün. Bir projede pandas
kütüphanesinin eski bir sürümünü kullanmanız gerekirken, başka bir projede yeni bir sürüme ihtiyaç duyuyorsunuz. Virtualenv ile her proje için farklı sürümleri kolayca yönetebilirsiniz.
Bir ekip projesinde çalışıyorsunuz ve ekip arkadaşlarınızın sizinle aynı bağımlılıkları kullanmasını istiyorsunuz. requirements.txt
dosyasını oluşturup, arkadaşlarınızın kendi virtualenv ortamlarında bu dosyayı kullanarak aynı bağımlılıkları kurmasını sağlayabilirsiniz:
pip install -r requirements.txt
Yeni bir kütüphaneyi test etmek istiyorsunuz, ancak sisteminizdeki Python kurulumunu bozmak istemiyorsunuz. Virtualenv ile izole bir ortam oluşturup, istediğiniz denemeleri güvenle yapabilirsiniz.
Virtualenv, Python projelerinde bağımlılık yönetimini kolaylaştıran güçlü bir araçtır. Proje bağımlılıklarının karışmasını önlemek, sistem Python kurulumunu korumak ve projeyi taşınabilir hale getirmek için virtualenv veya alternatif araçlardan birini kullanabilirsiniz. Özellikle ekip projelerinde veya farklı Python sürümleriyle çalışırken, virtualenv gibi araçlar hayat kurtarıcıdır.