Sanal Ortam (Virtual Environment) ve Bağımlılık Yönetimi (Dependency Management)

Sanal Ortam (Virtual Environment) Nedir?
Sanal ortam, farklı projelerin gerektirdiği bağımlılıkları, onlar için izole edilmiş python sanal ortamları oluşturarak ayrı tutmaya yardımcı olan bir araçtır.
Neden Böyle Bir Yapıya İhtiyaç Duyuyoruz?
Bir proje oluştururken bir çok kütüphane kullanmaktayız. Bu kütüphaneler düzenli olarak güncellenmektedir, güncellemeler ile birlikte yeni özellikler ekleniyorken daha önceki sürümde bulunan bazı özelliklerde kaldırılabilir eğer biz projemizde kaldırılan özelliklerden birini kullanıyorsak güncellemeden sonra proje çalışma aksaklıklarına uğrayacaktır. Çalışma aksaklıklarına sebep vermek için her proje için projenin gereksinimlerini içeren izole sanal ortamlar oluşturmamız gerekir.
Sanal Ortam Oluşturma ve Yönetim Araçları
- venv (Part of the standard library)
- virtualenv (Widely-used)
- pipenv (High-level interface)
- conda (Not only for Python)
Bağımlılık(Paket) Yönetimi (Dependency Management) Nedir?
Kütüphanelerin bağımlılıklarını yöneten araçtır.
Kütühanelerin Bağımlılığı Nedir?
Bir kütüphane çalışırken başka bir kütüphaneye ihtiyaç duyabilir. Örneğin Pandas çalışırken arka planda Numpy kütüphanesi kullanır biz Pandas’ı kullanmak istediğimizde sadece Pandas’ı sanal ortamımıza yüklersek çalışma sırasında Numpy’ı bulamadğına dair hata alırız. Paket yönetim aracı arka planda çalışır ve biz Pandas’ı yüklerken, Pandas’ın ihtiyaç duyduğu diğer kütüphaneleride yükler.
Paket Yönetim Araçları
- pip (requirements.txt)
- pipenv (Pipfile)
- conda (environment.yml)
Sanal Ortam ile Paket Yönetimi Arasındaki İlişki Nedir?
venv ve virtualenv araçları paket yönetimi için pip paket yönetimi aracını kullanır. conda ve pipenv ise hem sanal ortam oluştmak için hemde paket yönetimi için kullanılabilir.
conda: paket ve venv yönetim aracı (anaconda repository)
Sanal Ortam Oluşturma
Sanal Ortamı Aktive Etme, Devre Dışı Bırakma, Listeleme ve Silme
Paket Yükleme, Güncelleme, Arama, Silme ve Listeleme
Paketleri Export ve Import Etme