İki farklı Python projeniz olduğunu düşünün: biri pandas kütüphanesinin eski bir sürümünü, diğeri ise en güncel sürümünü gerektiriyor. İkisini de bilgisayarınıza “global” olarak kurarsanız, biri her zaman diğerini bozma riski taşır. Python’un bu soruna çözümü: sanal ortamlar (virtual environments).
Sanal Ortam Aslında Ne İşe Yarar?
Bir sanal ortam, her proje için izole, kendi başına yeten bir Python kurulumu yaratıyor. Her sanal ortamın kendi paket listesi, kendi pip kurulumu var — bir ortamda yüklediğiniz bir kütüphane, başka bir ortamı hiç etkilemiyor. Bu sayede, bir projede requests kütüphanesinin 2.25 sürümünü, başka bir projede 2.31 sürümünü, hiçbir çakışma yaşamadan aynı bilgisayarda bir arada kullanabiliyorsunuz.
venv ile Sanal Ortam Oluşturmak
Python 3.3’ten itibaren venv modülü standart kütüphanenin bir parçası, yani ekstra bir kurulum gerektirmiyor. Bir proje klasöründe şu komutu çalıştırmak yeterli:
bash
python -m venv ortam_adiBu komut, ortam_adi isminde bir klasör oluşturuyor — bu klasörün içinde, o ortama özel bir Python yorumlayıcısı ve paket deposu bulunuyor. Ortamı “aktifleştirmek” için işletim sistemine göre değişen bir komut çalıştırılıyor:
bash
# macOS / Linux
source ortam_adi/bin/activate
# Windows
ortam_adi\Scripts\activateAktifleştirme yapıldığında, terminal satırının başında genellikle o ortamın adı parantez içinde görünüyor — bu, artık izole bir ortamda çalıştığınızın görsel bir onayı.
pip Burada Nasıl Devreye Giriyor?
Kütüphaneler ve pip yazımızda pip komutunun paket kurmak için nasıl kullanıldığından bahsetmiştik. Bir sanal ortam aktifken çalıştırdığınız her pip install komutu, sadece o ortama kurulum yapıyor — bilgisayarınızın geneline değil. Bu, “bir projede bir paketi günceller güncellemez başka bir projenin bozulması” senaryosunu tamamen ortadan kaldırıyor.
Takım Çalışmasında Neden Kritik?
Bir projeyi başka biriyle paylaştığınızda (ya da GitHub üzerinden yayınladığınızda), o kişinin tam olarak hangi paketlere, hangi sürümlerle ihtiyaç duyduğunu bilmesi gerekiyor. Bunun standart yolu, mevcut ortamdaki paketleri bir dosyaya “dondurmak”:
bash
pip freeze > requirements.txtBu komut, o anki ortamda kurulu tüm paketleri ve sürümlerini bir metin dosyasına yazıyor. Projeyi başka bir bilgisayarda çalıştıracak kişi ise kendi sanal ortamını oluşturup şu komutla aynı kurulumu bir anda tekrarlayabiliyor:
bash
pip install -r requirements.txtOrtamı Devre Dışı Bırakmak
İşiniz bittiğinde, sanal ortamdan çıkmak için tek yapmanız gereken deactivate komutunu çalıştırmak — bu, terminalinizi tekrar bilgisayarınızın genel Python kurulumuna döndürüyor.
Sonuç
Sanal ortamlar, ilk bakışta gereksiz bir ekstra adım gibi görünebilir, ama birden fazla projeyle çalışan her Python geliştiricisi için neredeyse vazgeçilmez bir alışkanlık hâline geliyor. Küçük bir alışkanlık değişikliği, ileride yaşanacak onlarca “neden çalışmıyor?” sorununu baştan engelliyor.