You are currently viewing Python’da Sanal Ortamlar Nasıl Oluşturulur ve Yönetilir
Photo by Shahadat Rahman on Unsplash

Python’da Sanal Ortamlar Nasıl Oluşturulur ve Yönetilir

Bu yazımda, Virtualenv ve VirtualenvWrapper kütüphanelerini kullanarak Python için Windows’ta, Linux’ta ve Mac OSX’te (ve Unix’te) sanal ortamların nasıl kurulacağını ve kullanılacağını göstereceğim.

Neden sanal ortamlar?

Python’u ilk kullanmaya başladığınızda, muhtemelen ihtiyacınız olan tüm kütüphaneleri ana ortama yüklediniz. En azından ben böyle yaptım: sonuçta, ihtiyaç duyabileceğiniz her şeye her zaman hazır olmanın en kolay yolu bu şekilde! Öğrenme aşamasında bu yöntem işinizi çok kolaylaştıran bir yöntemdir.

Ancak gerçek proje geliştirme ortamında bu hiç iyi bir fikir değildir. Örneğin, iki proje üzerinde çalıştığınızı varsayalım. İlkinde (A projesi diyelim) NumPy 1.20.1 sürümünü gerektiren bir kütüphane kullandınız ve ikincisinde (B projesi) NumPy 1.21.0 sürümünü gerektiren başka bir kütüphane kurmanız gerekiyor. Şimdi çözülemez bir sorunla karşı karşıyasınız: A projesini bozmadan NumPy’yi güncelleyemezsiniz, ancak bunu yapmazsanız o zaman B projesi de çalışamaz!

Bu soruna bir çözüm sanal ortamları kullanmaktır. Adından da anlaşılacağı gibi sanal ortamlar her biri kendi kütüphanesine sahip sanal Python kurulumlarıdır. Yukarıdaki örnekteki gibi bir problemimizi çözmek için iki farklı sanal ortam kullanabiliriz:

  • virtualEnvironmentA, A projesinin ihtiyaç duyduğu kütüphaneleri kurmuş olacaktır (yani NumPy sürüm 1.20.1)
  • virtualEnvironmentB, B projesinin ihtiyaç duyduğu kütüphaneleri kurmuş olacaktır (yani NumPy sürüm 1.21.0)

Kurulum

Sanal ortamı oluşturmak için kullanılan kütüphane virtualenv ‘dir. Virtualenv’i kurmak için komut satırında aşağıdaki komutu çalıştırmanız yeterlidir. (Eğer sisteminizde pip3 kullanıyorsanız ikinci komutu çalıştırınız.)

pip install virtualenv veya pip3 install virtualenv

Sanal ortamları daha kolay yönetmek için kullanılan kütüphane ise virtualenvwrapper’dır. Bu kütüphane sanal ortamları yönetmenizde size yardımıcı olacaktır. Kurulması zorunlu olan bir kütüphane değildir.

Windows’ta: pip install virtualenvwrapper-win

Linux veya Unix’ta: pip install virtualenvwrapper veya pip3 install virtualenvwrapper

Virtualenv’i kullanma

Virtualenv’i yüklediğimize göre, şimdi bunun bir Python programında sanal ortam oluşturmak için nasıl kullanılabileceğini görelim. Her şeyden önce, komut satırını kullanarak programınızın bulunacağı klasöre gitmeniz gerekir. Burada şu komutu çalıştırarak yeni sanal ortamı oluşturacağız:

virtualenv ENV_NAME

ENV_NAME yazan yere istediğiniz herhangi bir adı verebilirsiniz. Örneğin:

virtualenv ilkSanalOrtamim

Yukarıdaki komut Python’un sanal sürümünü içeren ilkSanalOrtamim adlı bir klasör oluşturacaktır. Klasörü etkinleştirmek için şu komutu çalıştırın:

Windows’ta: .\ilkSanalOrtamim\Scripts\activate

Unix’te: source ilkSanalOrtamim\bin\activate

Komut satırında şimdi şöyle bir şey göreceksiniz:

Windows ortamı ekran görüntüsü
Linux / Unix ortamı ekran görüntüsü

bu, sistem sürümünü kullanmak yerine ilkSanalOrtamim’da kurulu Python ortamını kullandığınız anlamına gelir.

Eğer sanal ortamdan çıkmak isterseniz komut satırına aşağıdaki komutu yazmanız yeterlidir:

deactivate

Birden Fazla Ortamı Yönetme

Bir süre sonra, bilgisayarınızda yüklü birçok sanal ortam olabilir. virtualenvwrapper kullanarak tüm ortamları tek bir klasöre kurabilir ve bu sayede daha kolay yönetebilirsiniz.

virtualenvwrapper‘ın kullandığı klasör, WORKON_HOME adlı bir sistem değişkeninde depolanır ve varsayılan değeri %USERPROFILE%\Envs ‘dir. Bu klasörün nerede olduğunu kontrol etmek için echo %WORKON_HOME% komutunu çalıştırabilirsiniz:

>echo %WORKON_HOME%
C:\User\TheGeneralistProgrammer\Envs

Varsayılan dizini değiştirmek istiyorsanız, bu talimatları uygulayınız.

Windows’ta

Path değişkenlerinde (“Bilgisayar”a sağ tıklayıp ardından “özellikler” -> “gelişmiş sistem ayarları” -> “ortam değişkenleri”ne tıklarsanız bulabileceğiniz) WORKON_HOME adlı yeni bir kullanıcı değişkeni ekleyin (veya zaten varsa değiştirin) ve değeri kullanmak istediğiniz klasöre ayarlayın.

Linux/Unix’te

Linux/Unix’te aşağıdaki komut satırında çalıştırın:

export WORKON_HOME=<path>

burada <path> yazan yeri kaydetmek istediğiniz klasörün yolu ile değiştiriniz.

Ardından, echo komutunu tekrar çalıştırarak klasörün doğru olup olmadığını (hem Unix hem de Windows’ta) kontrol edebilirsiniz:

echo %WORKON_HOME%

Not: Klasörü güncellenmeden önce komut satırını kapatıp yeniden açmanız gerekebilir.

Yeni bir Sanal Ortam Oluşturma

virtualenvwrapper kullanarak yeni bir sanal ortam oluşturmak için şu komutu çalıştırmalısınız:

mkvirtualenv ENV_NAME

Bu, WORKON_HOME olarak ayarladığınız klasörde yeni sanal ortamı oluşturacak ve etkinleştirecektir. Çıkmak için virtualenv’de yaptığımız gibi deactivate‘i çalıştırmanız yeterlidir.

Öğrenilecek bir sonraki şey, zaten var olan bir ortamın nasıl etkinleştirileceğidir. Bu wrapper’ın avantajı, oluşturduğunuz çoklu ortamlardan herhangi birini aynı komutla etkinleştirebilmenizdir. İlk olarak, oluşturduğunuz ortamların tam listesini görmek için workon‘u çalıştırın. Çıktı şöyle bir şey olacaktır:

>workonPass a name to activate one of the following virtualenvs:
====================================================================
secondVenv
thirdVenv
venv

Ardından, belirli bir ortamı etkinleştirmek için şunları çalıştırabilirsiniz:

workon ENV_NAME

Not: Ortamların bir listesini, saklandıkları klasörün konumuyla birlikte görmek için komut satırında lsvirtualenv‘i çalıştırın.

Sanal Ortamı Kaldırma

Virtualenvwrapper ile artık ihtiyacınız olmayan bir ortamı rmvirtualenv ENV_NAME komutunu kullanarak kaldırmak da kolaydır. Örneğin, thirdVenv‘i kaldırmak için şunu çalıştıracağım:

>rmvirtualenv thirdVenv
Deleted D:\Desktop\VirtualEnvironmentsWrapper\thirdVenv

Kütüphaneleri Yükleme

Yeni bir sanal ortam oluşturduğunuzda, Python’un sistem sürümünde kurulu olsalar bile herhangi bir kütüphane içermeyecektir. Ancak, varsayılan Python kurulumunda yaptığınız gibi (ortamı etkinleştirdikten sonra) pip kullanarak kütüphaneleri yükleyebilirsiniz.

Ortamı oluşturur oluşturmaz ihtiyacınız olan tüm kütüphaneleri kurulsa harika olmaz mıydı? Neyse ki sadece bunu yapmak için bir yöntem var! Öncelikle, her biri için istediğimiz sürümle birlikte kurulacak kitaplıkların adlarının yazıldığı bir .txt dosyasına (genellikle requirements.txt olarak adlandırılır) ihtiyacımız var. Şu komutu kullanarak, kütüphanenin zaten kurulu olduğu başka bir ortam oluşturabiliriz:

pip freeze > requirements.txt

Bu, aşağıdaki gibi bir şey içeren bir dosya oluşturacaktır.

numpy==1.21.1
pandas==1.3.1
python-dateutil==2.8.2
pytz==2021.1
six==1.16.0

(alternatif olarak, istediğiniz kütüphanelerle kendiniz de oluşturabilirsiniz). Ardından, önceden yüklenmiş kütüphanelerle yeni bir ortam oluşturmak için şunu çalıştırın:

mkvirtualenv -r requirements.txt ENV_NAME

Farklı bir Python Sürümü Kullanma

Şimdiye kadar oluşturduğumuz tüm sanal ortamlar varsayılan olarak aynı python sürümünü kullanıyordu. Ancak, bilgisayarınıza birden fazla Python sürümü (3.7 ve 3.8 gibi) yüklediyseniz, isteğe bağlı olarak -p (veya --python ) parametresiyle sanal ortam için kullanmak istediğiniz Python sürümünü seçebilirsiniz. Yalnızca istediğiniz sürümün Python program dosyasının yolunu bilmeniz yeterlidir:

mkvirtualenv -p PATH_TO_PYTHON ENV_NAME

Son

Python’da Sanal Ortamları kullanmaya başlamak için bilmeniz gerekenler bunlar. Sonuna kadar okuduğunuz için teşekkür ederim, umarım size yardımcı olmuşumdur!