Modern yazılım geliştirme süreçlerinde birden fazla proje üzerinde aynı anda çalışmak kaçınılmazdır. Bu projelerin her biri farklı kütüphanelere, hatta aynı kütüphanenin birbiriyle uyumsuz farklı sürümlerine ihtiyaç duyabilir. Tüm paketleri işletim sisteminizin genel Python dizinine yüklemek, zamanla bağımlılık çakışmalarına ve sistem düzeyinde çalışan araçların bozulmasına yol açar. Python, bu sorunu kökten çözmek için sanal ortam (virtual environment) mekanizmasını sunar.
Python Sanal Ortam (venv) Nedir ve Neden Gereklidir?
Python sanal ortamı, projenize özel izole bir çalışma alanıdır. Bu ortam, kendi Python çalıştırıcısına (interpreter), standart kütüphane kopyalarına ve bağımsız bir paket dizinine sahiptir. Bir sanal ortam oluşturup etkinleştirdiğinizde, yüklediğiniz harici kütüphaneler işletim sisteminin geneline değil, yalnızca o ortama kurulur.
Sanal ortam kullanmanın temel kazanımları şunlardır:
- Sürüm çakışmalarını önler: Bir projede Django 3.2 sürümünü kullanırken, diğerinde Django 5.0 sürümünü sorunsuz çalıştırabilirsiniz.
- Temiz ve taşınabilir projeler sağlar: Projenizin tam olarak hangi kütüphanelere ihtiyaç duyduğunu net biçimde takip edebilirsiniz.
- Sistem kararlılığını korur: İşletim sisteminizin kendi işleyişi için ihtiyaç duyduğu Python ortamına dokunmayarak çökme risklerini engellersiniz.
- Güvenlik risklerini sınırlandırır: Test ettiğiniz güvensiz veya deneysel bir paket yalnızca ilgili izole dizinde kalır, diğer projelerinizi etkilemez.
Python 3.3 sürümünden bu yana standart kütüphanenin bir parçası olarak sunulan venv modülü, ek bir üçüncü taraf araca ihtiyaç duymadan doğrudan kullanılabilen en pratik çözümdür.
Kurulum Öncesi Hazırlık ve Gereksinimler
Sanal ortam oluşturmaya başlamadan önce sisteminizde Python 3’ün kurulu olduğundan emin olmanız gerekir. Terminal veya komut istemcisini açarak aşağıdaki komutla mevcut Python sürümünü kontrol edebilirsiniz:
python --version
Bazı Linux ve macOS dağıtımlarında varsayılan Python ikilisi python3 olarak adlandırılır. Eğer yukarıdaki komut hata verirse şu komutu deneyin:
python3 --version
Ubuntu ve Debian tabanlı Linux dağıtımlarında venv modülü varsayılan Python paketiyle birlikte kurulmayabilir. Bu durumda terminalden ilgili paketi elle kurmanız gerekir:
sudo apt update
sudo apt install python3-venv
Adım Adım Sanal Ortam Oluşturma
Sanal ortam, projenizin bulunduğu dizin içinde oluşturulur. İlk olarak üzerinde çalışacağınız proje klasörünü oluşturun ve içine girin:
mkdir proje_klasorum
cd proje_klasorum
Artık venv modülünü çalıştırarak sanal ortamı oluşturabilirsiniz. Komutun genel yapısı python -m venv <ortam_adi> şeklindedir. Yaygın kullanımda ortam adı olarak venv, .venv veya env tercih edilir:
python3 -m venv .venv
Bu komut çalıştığında, belirtilen isimde bir dizin oluşturulur. Bu dizin içinde şu bileşenler yer alır:
- pyvenv.cfg: Ortamın yapılandırma ayarlarını ve ana Python yolunu tutan dosya.
- bin (Windows üzerinde Scripts): Python çalıştırıcısının kopyası ve ortamı yöneten betikler.
- lib: Ortama yüklenecek üçüncü taraf paketlerin saklandığı dizin.
- include: C uzantılı Python paketlerini derlemek için gerekli başlık dosyaları.
Sanal Ortamı Aktif Etme
Ortam dizinini oluşturmak ortamın hemen kullanılmaya başlandığı anlamına gelmez. Terminal oturumunuza bu ortamı kullanmasını bildirmeniz, yani ortamı aktif etmeniz gerekir. Aktif etme komutu kullandığınız işletim sistemine ve kabuk (shell) türüne göre değişiklik gösterir.
macOS ve Linux Üzerinde Aktifleştirme
Bash veya Zsh terminalinde ortamı aktif etmek için source komutu kullanılır:
source .venv/bin/activate
Windows Üzerinde Aktifleştirme
Windows Komut İstemi (Command Prompt) kullanıyorsanız:
.venvScriptsactivate.bat
Windows PowerShell kullanıyorsanız:
.venvScriptsActivate.ps1
PowerShell üzerinde bu betiği çalıştırırken betik çalıştırma ilkesi (ExecutionPolicy) hatası alırsanız, yetkilendirmeyi geçerli kullanıcı oturumu için geçici olarak açmanız gerekir:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Ortam başarıyla aktif edildiğinde, terminal satırınızın en başında parantez içinde ortamın adı görünür:
(.venv) kullanici@bilgisayar:~/proje_klasorum$
Bu ifadeyi gördüğünüzde, çalıştıracağınız tüm Python ve pip komutlarının yalnızca bu ortama etki edeceğinden emin olabilirsiniz. Ortamın doğruluğunu teyit etmek için hangi çalıştırıcının kullanıldığını sorgulayabilirsiniz:
which python
Windows için:
where python
Çıktı, projenizin içindeki .venv dizinini işaret etmelidir.
Paket Yönetimi ve Bağımlılıkların Kaydedilmesi
Sanal ortam aktifken pip aracılığıyla yüklediğiniz her kütüphane bu ortama yazılır. Örneğin, HTTP istekleri yapmak için popüler bir kütüphane olan requests paketini kuralım:
pip install requests
Yüklenen paketleri ve bunların bağlı olduğu alt paketleri görmek için:
pip list
Projenizi başka bir bilgisayara taşırken veya bir ekip arkadaşınızla paylaşırken sanal ortam klasörünün kendisini kopyalamamalısınız; çünkü bu klasör işletim sistemine ve dosya yollarına bağımlıdır. Bunun yerine bağımlılıkları metin formatında dışa aktarmanız gerekir:
pip freeze > requirements.txt
Bu komut, aktif ortamdaki tüm paketlerin isimlerini ve kesin sürümlerini requirements.txt adlı bir dosyaya kaydeder. Projeyi devralan başka biri, kendi sanal ortamını oluşturup aktif ettikten sonra aynı kütüphaneleri tek bir komutla kurabilir:
pip install -r requirements.txt
Sanal Ortamdan Çıkış Yapma ve Ortamı Silme
Projenizle işiniz bittiğinde veya başka bir projeye geçmek istediğinizde sanal ortamı kapatmanız gerekir. Bunun için terminale şu komutu yazmanız yeterlidir:
deactivate
Bu işlemden sonra terminal satırınızın başındaki (.venv) ifadesi kaybolur ve sisteminiz genel Python ortamına geri döner.
Eğer sanal ortamı tamamen kaldırmak isterseniz, ortamı pasif hale getirdikten sonra oluşturduğunuz klasörü işletim sisteminin dosya silme komutlarıyla silebilirsiniz:
rm -rf .venv
Windows üzerinde:
rmdir /s /q .venv
En İyi Uygulamalar ve Güvenlik Tavsiyeleri
Sanal ortamları yönetirken dikkat etmeniz gereken bazı önemli noktalar şunlardır:
- Git deponuza asla sanal ortam dizinini eklemeyin. Projenizin kök dizininde bulunan
.gitignoredosyasına.venv/veyavenv/satırını ekleyin. - Her yeni proje için istisnasız yeni bir sanal ortam oluşturun. Birden fazla projeyi tek bir sanal ortamda birleştirmeyin.
- Bağımlılıklarınızı düzenli olarak
requirements.txtdosyasına aktararak sürüm geçmişinizi güvende tutun. - Ortam içindeki pip aracını güncel tutarak bilinen güvenlik açıklarına karşı önlem alın:
python -m pip install --upgrade pip
Özet ve Sonraki Adımlar
Python projelerinde yalıtım sağlamak; sürüm karmaşalarını engellemek, sistem kararlılığını korumak ve güvenli bir geliştirme süreci yürütmek için zorunludur. Dahili venv modülü, harici bir araç gerekmeden dakikalar içinde izole ortamlar oluşturmanızı sağlar.
Bir sonraki adım olarak, projelerinizde bağımlılık yönetimini daha gelişmiş hale getirmek için poetry veya pipenv gibi modern paket yöneticilerini inceleyebilir, bağımlılıkların kilitlenmesi (lock file) mekanizmalarını öğrenebilirsiniz.


Comments
No comments yet. Be the first to comment.