Python sanal ortamlarını virtualenv ve venv kullanarak kurmaya yönelik kapsamlı bir kılavuz. Dünya çapındaki geliştiriciler için proje izolasyonu ve bağımlılık yönetimi sağlar.
Python Virtualenv Kurulumu: İzole Ortam Oluşturma
Python geliştirme dünyasında, bağımlılıkları yönetmek ve proje izolasyonunu sağlamak, sağlam ve sürdürülebilir uygulamalar oluşturmak için çok önemlidir. Bunu başarmanın en etkili yollarından biri sanal ortamları kullanmaktır. Sanal ortam, kurulu paketleriyle birlikte belirli bir Python yorumlayıcısını barındıran bağımsız bir dizindir. Bu, farklı paket sürümlerinden kaynaklanan çakışmalar olmadan, her biri kendi benzersiz bağımlılık kümesine sahip birden çok proje üzerinde aynı anda çalışmanıza olanak tanır.
Neden Sanal Ortamlar Kullanmalısınız?
İki Python projesi üzerinde çalıştığınız bir senaryoyu düşünün. A Projesi, belirli bir kitaplığın 1.0 sürümünü gerektirirken, B Projesi aynı kitaplığın 2.0 sürümüne ihtiyaç duyar. Sanal ortamlar olmadan, kitaplığı global olarak kurmak, projelerden biri için büyük olasılıkla uyumluluk sorunlarına neden olur. Sanal ortamlar, her projenin kendi paket kümesine sahip olması için izole alanlar sağlayarak bu sorunu çözer.
İşte sanal ortamları kullanmanın bazı temel faydaları:
- Bağımlılık İzolasyonu: Her projenin kendi bağımlılık kümesi vardır ve çakışmaları önler.
- Sürüm Yönetimi: Farklı projeler için farklı paket sürümlerini kolayca yönetin.
- Proje Tekrarlanabilirliği: Projenizin aynı bağımlılıklarla farklı makinelerde kolayca çoğaltılabildiğinden emin olun.
- Temiz Global Ortam: Global Python kurulumunuzu temiz ve düzenli tutar.
Sanal Ortamları Kurma: virtualenv ve venv
Python'da sanal ortamlar oluşturmak için iki temel araç vardır: virtualenv
ve venv
. virtualenv
, uzun süredir var olan ve çok çeşitli özellikler sunan üçüncü taraf bir pakettir. venv
, Python 3.3 ve sonraki sürümlerinde yerleşik bir modüldür ve virtualenv
'e hafif bir alternatif sunar. Her iki araç da aynı amaca ulaşır: izole Python ortamları oluşturmak.
virtualenv Kullanımı
virtualenv
, sanal ortamlar oluşturmak için popüler ve yaygın olarak kullanılan bir araçtır. İşte nasıl kullanılacağı:
Kurulum
Öncelikle, virtualenv
'i kurmanız gerekir. Bunu pip kullanarak yapabilirsiniz:
pip install virtualenv
Sanal Ortam Oluşturma
virtualenv
kurulduktan sonra, proje dizininizde bir sanal ortam oluşturabilirsiniz. Terminalde proje dizininize gidin ve aşağıdaki komutu çalıştırın:
virtualenv myenv
Bu komut, sanal ortamı içeren myenv
adında yeni bir dizin oluşturur (istediğiniz herhangi bir adı seçebilirsiniz). myenv
dizini aşağıdaki alt dizinleri içerecektir:
bin
: Python yürütülebilir dosyasını ve etkinleştirme komut dosyalarını içerir.include
: Python uzantılarını derlemek için C başlıklarını içerir.lib
: Kurulu paketlerin bulunacağı site-packages dizinini içerir.
Sanal Ortamı Etkinleştirme
Sanal ortamı kullanmak için onu etkinleştirmeniz gerekir. Bu, sanal ortamdaki Python yorumlayıcısını ve paketlerini kullanmak için kabuğunuzun ortam değişkenlerini değiştirecektir.
Linux/macOS'ta aşağıdaki komutu kullanın:
source myenv/bin/activate
Windows'ta aşağıdaki komutu kullanın:
myenv\Scripts\activate
Etkinleştirmeden sonra, terminal isteminizin etkin sanal ortamı gösterdiğini fark edeceksiniz (örneğin, (myenv) $
). Artık, pip kullanarak kurduğunuz tüm paketler sanal ortama kurulacak ve global Python kurulumunuzu veya diğer sanal ortamlarınızı etkilemeyecektir.
Sanal Ortamı Devre Dışı Bırakma
Proje üzerinde çalışmayı bitirdiğinizde, aşağıdaki komutu çalıştırarak sanal ortamı devre dışı bırakabilirsiniz:
deactivate
Bu, terminal isteminizi normal durumuna döndürecek ve global Python kurulumunuzu kullanmaya geri dönecektir.
venv Kullanımı
venv
, Python 3.3 ve sonraki sürümlerinde yerleşik bir modüldür ve virtualenv
'e hafif bir alternatif sunar. Python'un bunu içeren bir sürümünü kullanıyorsanız, genellikle venv
'i kullanmanız önerilir.
Sanal Ortam Oluşturma
venv
kullanarak bir sanal ortam oluşturmak için, terminalde proje dizininize gidin ve aşağıdaki komutu çalıştırın:
python3 -m venv myenv
Bu komut, virtualenv
'e benzer şekilde sanal ortamı içeren myenv
(veya seçtiğiniz herhangi bir ad) adında yeni bir dizin oluşturur.
Sanal Ortamı Etkinleştirme
venv
için etkinleştirme işlemi, virtualenv
ile aynıdır. Linux/macOS'ta aşağıdaki komutu kullanın:
source myenv/bin/activate
Windows'ta aşağıdaki komutu kullanın:
myenv\Scripts\activate
Etkinleştirmeden sonra, terminal isteminiz etkin sanal ortamı gösterecek ve kurduğunuz tüm paketler ortam içinde izole edilecektir.
Sanal Ortamı Devre Dışı Bırakma
Bir venv
ortamını devre dışı bırakmak da virtualenv
ile aynıdır:
deactivate
pip ile Bağımlılıkları Yönetme
Bir sanal ortamı etkinleştirdikten sonra, paketleri kurmak, yükseltmek ve kaldırmak için pip'i kullanabilirsiniz. İşte bazı yaygın pip komutları:
- Bir paket kurun:
pip install package_name
(örneğin,pip install requests
) - Bir paketin belirli bir sürümünü kurun:
pip install package_name==version
(örneğin,pip install requests==2.26.0
) - Bir paketi yükseltin:
pip install --upgrade package_name
(örneğin,pip install --upgrade requests
) - Bir paketi kaldırın:
pip uninstall package_name
(örneğin,pip uninstall requests
) - Kurulu paketleri listeleyin:
pip list
veyapip freeze
Gereksinimler Dosyası Oluşturma
Projenizin bağımlılıklarının diğer makinelerde kolayca çoğaltılabildiğinden emin olmak için, bir requirements.txt
dosyası oluşturmak en iyi uygulamadır. Bu dosya, sanal ortamınıza kurulu tüm paketleri ve sürümlerini listeler.
Bir requirements.txt
dosyası oluşturmak için, sanal ortamınızı etkinleştirin ve aşağıdaki komutu çalıştırın:
pip freeze > requirements.txt
Bu, proje dizininizde requirements.txt
adında bir dosya oluşturacaktır. Daha sonra bu dosyayı projenizin sürüm kontrol sistemine (örneğin, Git) dahil edebilirsiniz, böylece başkaları aynı bağımlılıkları kolayca kurabilir.
Gereksinimler Dosyasından Kurulum
Bir requirements.txt
dosyasında listelenen bağımlılıkları kurmak için, sanal ortamınızı etkinleştirin ve aşağıdaki komutu çalıştırın:
pip install -r requirements.txt
Bu, requirements.txt
dosyasından tüm paketleri ve belirtilen sürümlerini kuracaktır.
Sanal Ortam Kullanımı için En İyi Uygulamalar
Sanal ortamları kullanırken izlenecek bazı en iyi uygulamalar şunlardır:
- Her proje için bir sanal ortam oluşturun: Bu, her projenin kendi izole bağımlılık kümesine sahip olmasını sağlar.
- Gereksinimler dosyanızı güncel tutun: Projenizin mevcut bağımlılıklarını yansıtmak için
requirements.txt
dosyanızı düzenli olarak güncelleyin. - Sürüm kontrolü kullanın: Sanal ortam dizininizi projenizin
.gitignore
dosyasına dahil ederek sürüm kontrolüne işlenmesini önleyin. Yalnızcarequirements.txt
dosyasını işleyin. - Sanal ortamlarınızı tutarlı bir şekilde adlandırın: Karışıklığı önlemek için sanal ortamlarınız için tutarlı bir adlandırma kuralı kullanın. Örneğin,
.venv
veyavenv
olarak adlandırabilirsiniz. - Bir sanal ortam yöneticisi kullanın: Birden çok sanal ortamın yönetimini basitleştirmek için
virtualenvwrapper
veyaconda
gibi bir sanal ortam yöneticisi kullanmayı düşünün.
Sanal Ortam Yöneticileri
virtualenv
ve venv
sanal ortamlar oluşturmak için mükemmel araçlar olsa da, birden çok projeyle çalışırken yönetimi zahmetli hale gelebilir. Sanal ortam yöneticileri, sanal ortamları yönetmek için ek özellikler ve kolaylık sağlar.
virtualenvwrapper
virtualenvwrapper
, sanal ortamları oluşturmayı, yönetmeyi ve bunlarla çalışmayı kolaylaştıran virtualenv
için bir dizi uzantıdır. Sanal ortamları oluşturmak, etkinleştirmek, devre dışı bırakmak ve silmek ve ayrıca mevcut ortamları listelemek için komutlar sağlar.
virtualenvwrapper
'ı kurmak için pip'i kullanın:
pip install virtualenvwrapper
virtualenvwrapper
'ın kurulumu ve kullanımı, işletim sisteminize göre değişir. Ayrıntılı talimatlar için virtualenvwrapper
belgelerine bakın.
conda
conda
, açık kaynaklı bir paket, bağımlılık ve ortam yönetim sistemidir. Genellikle veri bilimi ve bilimsel hesaplamada kullanılır, ancak genel Python geliştirme için de kullanılabilir. conda
, sanal ortamlar oluşturmanıza ve yönetmenize, ayrıca paketleri kurmanıza ve yönetmenize olanak tanır.
conda
'yı kurmak için Anaconda web sitesinden Anaconda veya Miniconda'yı indirin ve kurun.
Yeni bir conda ortamı oluşturmak için aşağıdaki komutu kullanın:
conda create --name myenv python=3.9
Ortamı etkinleştirmek için:
conda activate myenv
Ortamı devre dışı bırakmak için:
conda deactivate
Conda, bağımlılıkları ve ortamları yönetmek için kapsamlı bir araç seti sunar ve bu da onu karmaşık projeler için popüler bir seçim haline getirir.
Küresel Hususlar ve En İyi Uygulamalar
Küresel ekiplerde çalışırken veya uygulamaları farklı bölgelere dağıtırken, şu faktörleri göz önünde bulundurun:
- Tutarlı Python Sürümleri: Tüm ekip üyelerinin geliştirme için aynı Python sürümünü kullandığından emin olun. Bu, entegrasyon ve dağıtım sırasında beklenmedik uyumluluk sorunlarını önler. Örneğin, Japonya'nın Tokyo kentindeki bir geliştirme ekibi ve İngiltere'nin Londra kentindeki başka bir ekip, tek bir Python sürümü üzerinde anlaşmalıdır.
- Standartlaştırılmış Ortamlar: Farklı işletim sistemleri ve altyapılar arasında tutarlı geliştirme ve dağıtım ortamları oluşturmak için sanal ortamlara ek olarak Docker veya Vagrant gibi araçlar kullanın. Bu, uygulamanızın temel sistemden bağımsız olarak beklendiği gibi davranacağını garanti eder. macOS'ta geliştirilen bir uygulamayı bir Linux sunucusuna dağıttığınızı hayal edin; Docker kullanmak tutarlı davranış sağlar.
- Bağımlılık Sabitleme: `requirements.txt` dosyanızda kesin sürüm numaraları kullanın. Bu, herkesin bağımlılıkların tam olarak aynı sürümlerini kullandığından emin olarak, farklı kitaplık sürümlerinden kaynaklanan olası hataları azaltır. `requests>=2.0` yerine `requests==2.28.1` kullanın.
- Çapraz Platform Uyumluluğu: Geliştirme sürecinin başlarında platforma özgü sorunları belirlemek ve çözmek için uygulamanızı farklı işletim sistemlerinde (Windows, macOS, Linux) test edin. Bulut tabanlı CI/CD ardışık düzenleri, farklı platformlarda testi otomatikleştirebilir.
- Saat Dilimleri: Zamana duyarlı verilerle uğraşırken, tutarlı bir saat dilimi (örneğin, UTC) kullanın ve saat dilimi dönüşümlerini uygun şekilde yönetin. Farklı bölgelerde değişiklik gösterebileceğinden, yerel saat dilimlerine güvenmekten kaçının.
- Karakter Kodlaması: Uluslararası karakterlerin doğru şekilde işlenmesini sağlamak için tüm metin dosyaları (kaynak kodu ve yapılandırma dosyaları dahil) için UTF-8 kodlamasını kullanın.
Yaygın Sorunları Giderme
Sanal ortamlarla çalışırken karşılaşabileceğiniz bazı yaygın sorunlar ve bunları nasıl çözeceğiniz aşağıdadır:
- Etkinleştirme Sorunları: Bir sanal ortamı etkinleştirmede sorun yaşıyorsanız, işletim sisteminiz ve kabuğunuz için doğru etkinleştirme komut dosyasını kullandığınızdan emin olun. Etkinleştirme komut dosyasının yolunu iki kez kontrol edin ve yürütülebilir olduğundan emin olun.
- Paket Kurulum Sorunları: Paketleri kurmada sorun yaşıyorsanız, sanal ortamı etkinleştirdiğinizden ve pip'in doğru sürümünü kullandığınızdan emin olun. Ayrıca pip'i en son sürüme yükseltmeniz de gerekebilir.
- Bağımlılık Çakışmaları: Bağımlılık çakışmalarıyla karşılaşıyorsanız, bağımlılıklarınızı analiz etmek ve çakışan paketleri belirlemek için
pipdeptree
veyapip-tools
kullanmayı deneyin. Çakışmaları çözmek için belirli paketleri yükseltmeniz veya düşürmeniz gerekebilir. - Sanal Ortam Bozulması: Sanal ortamınız bozulursa, onu silmeyi ve sıfırdan yeniden oluşturmayı deneyebilirsiniz.
Sonuç
Sanal ortamlar, Python geliştiricileri için temel bir araçtır ve bağımlılık izolasyonu, sürüm yönetimi ve proje tekrarlanabilirliği sağlar. virtualenv
veya venv
kullanarak, projelerinizin birbirinden izole olmasını ve global Python kurulumunuzun temiz kalmasını sağlayabilirsiniz. Bağımlılıkların kolayca çoğaltılmasını sağlamak için her proje için bir requirements.txt
dosyası oluşturmayı unutmayın. Bu kılavuzda özetlenen en iyi uygulamaları izleyerek, Python geliştirme iş akışınızı kolaylaştırabilir ve daha sağlam ve sürdürülebilir uygulamalar oluşturabilirsiniz. Küresel işbirliği için, standartlaştırılmış ortamlar ve dikkatli bağımlılık yönetimi çok önemlidir.