Python'da Sanal Ortamlara Başlarken
Yayınlanan: 2022-11-07Bu makalede, hem Windows hem de Linux işletim sistemlerinde Python'da sanal ortamlara nasıl başlayacağınızı öğreneceksiniz.
Yerel geliştirme ortamınızda birden çok proje üzerinde çalışmaya başladığınızda, genellikle bağımlılık sorunlarıyla karşılaşırsınız. Projelerinizin her biri için sanal ortamlar oluşturmak, bağımlılıkları ve proje gereksinimlerini daha iyi yönetmenize yardımcı olabilir.
Python'da sanal ortamların avantajından yararlanmak için sanal ortamlar oluşturmayı ve etkinleştirmeyi öğrenelim.
Sanal Ortamlar Nelerdir?
Sanal ortamlar , bir projenin kodunu ve bağımlılıklarını içeren yalıtılmış ve bağımsız ortamlardır.
Ama neden sanal ortamları kullanmalısınız?
Sanal ortamlar, çeşitli projeler için aynı kitaplıkların farklı sürümlerini kurmanıza ve kullanmanıza izin verir. Sanal ortamların kullanılması, iki veya daha fazla proje farklı sürümler kullandığında, herhangi bir kırılma değişikliği olmamasını da sağlar. Bunu daha ayrıntılı olarak anlayalım.
Python'da Paket Kurulumu
Python standart kitaplığı, birim testi, işletim sistemiyle etkileşim, tarih ve saatlerle çalışma ve daha fazlası için birkaç faydalı modülle birlikte gelir.
Ancak Python projeleri üzerinde çalışırken, genellikle Python topluluğu tarafından geliştirilen diğer paketleri yüklemeniz gerekir. Bu, özellikle veri toplama için web kazıma, makine öğrenimi ve web uygulamaları gibi uygulamalar için geçerlidir.
Bu paketleri kurmak ve yönetmek için conda veya pip kullanabilirsiniz.
Her proje, yüklemeniz gereken belirli bir paket kümesi gerektirir. Ancak geliştirme ortamınızdaki tüm paketleri yerel makinenize kurduğunuzda, tüm projeler global olarak kurulmuş paketleri paylaşır.

Peki bu neden bir problem?
Geliştirme ortamınızda N paketleriniz olabilir. Ancak şu anda üzerinde çalıştığınız proje bunlardan sadece 3 tanesini gerektirebilir. Tüm projeleriniz ortak kurulumları paylaştığında, projelerden hangisinin kurulu paketlerden hangisini gerektirdiğini – her projeyle ilişkili bağımlılıkları – belirlemek çok zordur.
Bu yaklaşımın başka bir sınırlaması var. Proje kitaplığınızda bir Django 2.2 projeniz olduğunu varsayalım. Django 4 kullanan bir proje üzerinde çalışmaya başlamaya karar verdiniz. Böylece, aynı geliştirme ortamına Django'nun en son sürümünü yüklersiniz.
Mevcut kuruluma ne olur?
Kaldırılır ve yüklediğiniz Django sürümü ile değiştirilir. Daha yeni kararlı sürümlerde bazı özellikler kullanımdan kaldırılmış olabilir. Ve önceki Django projeleriniz beklendiği gibi çalışmayabilir.

Buraya kadarki tartışmamızı özetlersek: paketlerin tümü ortak bir ortama kurulduğunda bağımlılık yönetimi zorlaşır çünkü projeler kendi kitaplık setlerinin çalışmasını gerektirir.
Sanal Ortamlar Nasıl Çalışır?
Şimdiye kadar, paketlerin küresel bir geliştirme ortamında (sistem çapında kurulumlar) kurulmasıyla ilgili zorlukları gördük. Bu, sanal ortamların bu sınırlamayı nasıl ele aldığını anlamamız için bizi motive ediyor.
Python projeleriniz için bir sanal ortam oluşturup etkinleştirdiğinizde, yalnızca mevcut proje için gerekli olan paketleri kurabilirsiniz.

Django projeleri örneğini tekrar ziyaret ederek, sanal ortamlarla, hem Django 2.2 hem de Django 4 projelerini herhangi bir çakışma olmadan çalıştırabilirsiniz. Bunun nedeni, Django kurulumlarının artık sistem çapında kurulumlar değil, ilgili projelerin sanal ortamlarıyla sınırlı olmasıdır.
Özünde: sanal ortamlar, bir proje için hem kodu hem de bağımlılıkları içeren yalıtılmış ortamlardır.
Sanal Ortamların Avantajları

Artık Python'da sanal ortamların nasıl çalıştığını öğrendiğinize göre, bunları kullanmanın avantajlarını sıralayalım:
- Sanal ortamlar, bireysel projeler için yalnızca belirli proje için gerekli olan paketleri kurmamıza izin veren yalıtılmış bir geliştirme ortamı sağlar.
- Projelerin sanal ortamları hem bağımsız hem de yalıtılmış olduğundan, farklı projeler gereksinimlere bağlı olarak aynı kitaplığın farklı sürümlerini kullanabilir. Sanal ortamlarda, kitaplıkları kurmak ve geliştirme ortamını kurmak için sistem izinleri konusunda endişelenmenize gerek yok.
- Paketleri sanal bir ortama yükledikten sonra , projenin bağımlılıklarını bir gereksinim.txt dosyasında yakalayabilirsiniz . Bu, diğer geliştiricilerin projenin geliştirmesini ve ortamını çoğaltmasına ve gerekli paketleri tek bir komut kullanarak yüklemesine olanak tanır.
Sanal Ortamlar Oluşturmak İçin Araçlar

Şimdiye kadar sanal ortamların nasıl çalıştığını ve bunları kullanmanın avantajlarını öğrendiniz. Python'da sanal ortamlar oluşturmak ve yönetmek için kullanabileceğiniz bazı popüler araçları keşfedelim.
#1. sanal ortam
Virtualenv , Python projeleri için sanal ortamlar oluşturmak ve yönetmek için yaygın olarak kullanılan araçlardan biridir. virtualenv
işlevselliğinin bir alt kümesi venv paketinde mevcuttur. Ancak virtualenv
paketi venv
ile karşılaştırıldığında daha hızlı ve genişletilebilir.
#2. Borunv
pipnev ile hem virtualenv
sanal ortam işlevselliğine hem de pip
paket yönetimi yeteneklerine sahip olursunuz. Kullanarak sanal bir ortamın içindeki proje bağımlılıklarını yönetmek için pipfiles yönetir.
pipenv
bu Pipenv oyun alanında doğrudan tarayıcıdan deneyebilirsiniz.
#3. kına
Geliştirme için Python'un Anaconda dağıtımını kullanıyorsanız, paket yönetimi ve sanal ortamlar oluşturmak için conda'yı kullanabilirsiniz.
Daha fazla bilgi edinmek için, conda ile ortamları yönetmeyle ilgili bu kapsamlı kılavuza göz atın.

#4. Şiir
Poetry, tüm Python projelerinde bağımlılıkları yönetmenize izin veren bir paket yönetim aracıdır. Poetry'yi kullanmaya başlamak için Python 3.7 veya sonraki bir sürümünün kurulu olması gerekir.
#5. Venv
Belirtildiği gibi venv , virtualenv'in işlevselliğinin bir alt kümesini sunar, ancak Python 3.3'ten başlayarak Python standart kitaplığında yerleşik olması avantajıyla birlikte gelir.
Python kurulumuyla birlikte kullanıma hazırdır ve harici paketlerin kurulumunu gerektirmez. Bu öğreticide sanal ortamlar oluşturmak ve bunlarla çalışmak için kullanacağız.
Ubuntu'da Python Sanal Ortamı Nasıl Oluşturulur
Bu öğreticinin geri kalanını takip etmek için yerel bir Python 3 kurulumuna sahip olmanız gerekir. Python 3.5 veya sonraki bir sürümünü çalıştırdığınızdan emin olun.
Bu bölüm, bir Ubuntu Linux makinesinde sanal ortamlar oluşturma ve etkinleştirme adımlarını özetlemektedir. Aynı adımlar diğer Linux dağıtımlarında da kullanılabilir.
Daha kolay yönetim için bir proje dizini ve içine cd
oluşturalım; Bu dizinin içinde venv
oluşturacağız.
$ mkdir my_project $ cd my_project
Python projeniz için sanal bir ortam oluşturmaya yönelik genel sözdizimi python3 -m venv <venv-name-or-path>
. Bu komutu çalıştırdıktan sonra, geçerli çalışma dizininde my_env
adlı bir sanal ortam oluşturulacaktır:
$ python3 -m venv my_env
Sanal Ortamda Paketler Nasıl Etkinleştirilir ve Kurulur
Sanal ortamı oluşturduktan sonra, onu etkinleştirebilir ve içine gerekli paketleri kurabilirsiniz. Sanal ortamı etkinleştirmek için aşağıdaki komutu çalıştırabilirsiniz:
$ source my_env/bin/activate
Bir sanal ortamı etkinleştirdikten sonra, kurulu paketlerin listesini almak için pip list
komutunu çalıştırabilirsiniz:
$ pip list

Şimdiye kadar herhangi bir paket pip
, bu nedenle oluşturulan sanal ortamların her birinde varsayılan olarak yüklenen kurulum araçlarını ve setuptools
görebilmeniz gerekir.
Sanal ortam içinde pip
kurulumu, belirli proje için gerekli paketleri kurmanıza izin verir; bu nedenle her proje için bağımsız bir geliştirme ortamına sahipsiniz.
Artık sanal ortamı etkinleştirdiğinize göre, pip kullanarak projeye özel paketler kurabilirsiniz. Örnek olarak, en çok indirilen Python paketlerinden biri olan ve web API'leri ile çalışmak için HTTP istekleri göndermek için birkaç kullanışlı özellik sağlayan Python isteklerini yükleyelim.
$ pip install requests
İstek kitaplığını kurduğunuzda, talep kitaplığının gerektirdiği tüm paketlerle birlikte kurulduğunu göreceksiniz.

$ pip list

pip freeze
komutunu kullanabilir ve çıktıyı gösterildiği gibi bir gereksinim.txt dosyasına yönlendirebilirsiniz:
$ pip freeze > requirements.txt
Mevcut proje dizininin içeriğini incelerseniz, gereksinimler.txt dosyasının oluşturulduğunu göreceksiniz.
$ ls # my_env requirements.txt
Proje üzerinde çalıştıktan sonra aşağıdaki komutu çalıştırarak sanal ortamı devre dışı bırakabilirsiniz:
$ deactivate
Windows'ta Python Sanal Ortamı Nasıl Oluşturulur
Genel olarak, geliştirme için bir Linux ortamı tercih edilir. Bir Windows makinesindeyseniz, yerel geliştirme için bir Ubuntu terminal ortamı kurmak için Linux için Windows Alt Sistemini (WSL) kullanmayı düşünebilirsiniz.
Bir Windows makinesindeyseniz, Windows PowerShell'i veya Komut İstemi'ni kullanabilir ve aşağıdaki komutu kullanarak sanal ortamlar oluşturabilirsiniz:
> python -m venv <path-to-venv>
Sanal Ortam Nasıl Etkinleştirilir
Bir Windows makinesinde sanal ortamları etkinleştirmek, komut isteminde mi yoksa Windows PowerShell'de mi çalıştığınıza bağlı olarak farklıdır.
Komut istemindeyseniz, sanal ortamı etkinleştirmek için aşağıdaki komutu çalıştırın:
> <path-to-venv>\Scripts\activate.bat
Alternatif olarak, Windows PowerShell kullanıyorsanız, bu komutu çalıştırmak sanal ortamı etkinleştirir:
> <path-to-venv>\Scripts\Activate.ps1
Gerekli tüm paketleri sanal ortam içerisine kurabilirsiniz.
Sanal ortamları devre dışı bırakmak için, hem komut isteminde hem de Windows PowerShell'de deactivate
komutunu çalıştırabilirsiniz.
Çözüm
Bu makalede, sistem genelinde kurulumların sınırlamalarını ve Python projelerinde bağımlılık yönetimini nasıl zorlaştırdıklarını tartıştık. Python'daki sanal ortamlar , bireysel projeler için yalıtılmış bir geliştirme ortamı sağlarken bağımlılıkları daha iyi yönetmenin bir yolunu sağlar.
Python'da sanal ortamlar oluşturmak ve yönetmek için yaygın olarak kullanılan araçlar arasında, sanal ortamlar oluşturmak ve etkinleştirmek için Python standart kitaplığında yerleşik olarak bulunan venv'yi nasıl kullanacağınızı öğrendiniz.
Bir projenin özel sanal ortamı içinde, bir projeye özgü kitaplık sürümleri kurulabilir. Bu gereksinimler daha sonra, diğer geliştiricilerin proje ortamını kolayca çoğaltmasına olanak tanıyan bir gereksinim.txt dosyasında yakalanabilir.
Bir sonraki Python projenize başladığınızda, daha iyi bağımlılık yönetimi için sanal ortamları kullandığınızdan emin olun. Mutlu kodlama!