Python Sanal Ortam (Virtual Environment)

Ahmet Okan YILMAZ
4 min readDec 13, 2021

--

Eğer python ile programlamaya ya da veri bilimi (1) ile ilgilenmeye yeni başladıysanız bir yerlerde bu ifade gözünüze çarpmış ya da duymuş olmalısınız. İşte Medium’daki bu ilk yazımda sanal ortam nedir, neden ihtiyaç duyarız, sanal ortam araçları nelerdir, vb. sorulara cevap vermeye çalışacağım.

Python Sanal Ortam

Sanal ortam nedir?(2) Sanal ortam, en basit hâliyle, farklı python projelerini birbirinden bağımsız/izole şekilde kullanmaya yarayan yapıdır. Bu yapının içerisinde Python yorumlayıcıları, kütüphaneler ve betikler bulunur. Etkin ortam üzerinde yapılan değişiklikler diğer sanal ortamları etkilemez.

Neden ihtiyaç duyarız? Bir projede kullanılacak kütüphanelerin başka bir projede gerekli olmadığı durumlarda sanal ortam oluşturarak yer ve zamandan kazanırız. Örneğin; PyQt kütüphanesi ile kullanıcı arayüzü geliştirdiğimiz bir projede Scikit-learn’ün olmasının anlamı yoktur. Ya da Python 3.1 yerine 2.7 sürümünü kullanmak istediğimizde de sanal ortamlar ihtiyacımızı karşılayacaktır.

Sanal ortam araçları nelerdir? Birçok yönetim aracı olmakla birlikte popüler olanlar şunlardır: Conda, Venv, Virtualenv, Pipenv ve Poetry. Bu yazıda Conda’yı ele alacağım.

Conda yalnızca bir sanal ortam yönetim aracı ya da paket yöneticisi değil, bir Python ekosistemi gibidir. Birçok paket yöneticisi gibi PyPi deposunu kullanmak yerine kendi paket deposunu kullanır.

Sanal ortam kurulumu nasıl yapılır? Conda’yı kullanabilmek için Anaconda ya da Miniconda’nın sisteminizde yüklü olması gerekir. Windows ve MacOS kurulumları ile ilgili bir çok kaynak bulunabilir. Ben Linux üzerinde anlatacağım. Arch Linux üzerinde AUR araçları ile kurulum yapılabilir.(3)

$ yay -S anaconda

Komut satırında “komut bulunamadı.” ifadesi ile karşılaşılırsa kabuk bu komutun nerede olduğunu bulamıyor demektir. Bulabilmesi için yine komut satırında aşağıdaki komut ile üstesinden gelebiliriz. Genellikle öntanımlı olarak ~/anaconda3 ‘da bulunur.

$export PATH=$PATH:$HOME/username/anaconda3/bin\"

usernameyazan yeren kendi kullanıcı adınızı yazmayı unutmayın. Her komut satırını kapatıp açtığınızda bu komutu girmek yerine ~/.bash_profile‘da kalıcı hâle getirebiliriz. Herhangi bir metin düzenleyici ile yapabildiğimiz gibi komut satırı üzerinden de gerekli işlemi yapabiliriz.

PATH=$PATH:$HOME/anaconda3/bin
source ~/.bash_profile

Sanal ortam nasıl oluşturulur ve yönetilir?(4) Kurulumun ardından conda emrimize amade. Şimdi bir sanal ortam oluşturduktan sonra paket yüklemeyi, silmeyi, yüklü paketleri listelemeyi, vb. işlemlerin nasıl yapıldığına bakalım.

Conda ile 4 farklı şekilde sanal ortam oluşturulabilir: Boş bir sanal ortam, belirli bir python sürümü ile ya da hem belirli bir python sürümü hem de yüklenmek istenen paketler ile. Son olarak daha önce oluşturulmuş bir sanal ortamdan üretilen .yml uzantılı yaml dosyası ile kurulum. Bu kurulum şeklini bu yazıyı daha fazla uzatmamak için başka bir yazıda ele alacağım.

Öncesinde hali hazırda oluşturulmuş sanal ortamları listeleyelim:

conda env list

Mevcut sanal ortamların listelenmesi

Buradaki listede * ile işaretli olan ortam o anda aktif olarak kullanılıan ortamdır.

conda create -n myenv

Boş bir sanal ortam oluşturulması

conda create -n myenv python=3 numpy pandas

Belirli bir python sürümü ve yüklenmek istenen paketler ile sanal ortam oluşturulması

conda create -n myenv python=3

Belirli bir python sürümü ile sanal ortam oluşturulması

Komut çalışıp tamamlandıktan sonra tekrar sanal ortamları listeleyip yeni oluşturduğumuz sanal ortamı gözlemleyebiliriz. Aktif olan sanal ortam * ile işaretlenir. Yeni oluşturduğumuz sanal ortamı aktive edip üzerinde çalışmaya başlayabiliriz.

conda activate myenv

Uyarı: Bu noktadan sonra yapılacak paket yükleme, silme, güncelleştirme işlemleri, o anda aktif olan sanal ortam üzerinde yapılır. Diğer sanal ortamları etkilemez.

Sanal ortamların listelenmesi ve aktive edilmesi

Conda ihtiyacınız duyduğunuz paketleri kurarken, arka planda paketler arası bağımlılıkları çözümler. Kuracağınız paketin sürümü ile o paketin ihtiyaç duyduğu başka paketlerin sürümlerinin birbiri ile uyumlu olması gerekir.

conda install numpy

Numpy paketinin kurulması

Bu sanal ortamda kurulu olmayan ama numpy’ın ihtiyaç duyduğu blas, mkl, six gibi paketler yüklenecek (will be INSTALLED), certifi paketi güncellencektir(will be UPDATED). Sürüm düşürülmesi gereken paket varsa ayrıca belirtilir(will be DOWNGRADED).

Bir paketin belirli bir sürümü de kurulmak istenebilir:

conda install numpy=1.10

Numpy paketinin belirli bir sürümünün kurulması

Aktif sanal ortamda kurulu olan paketleri de listeleyebiliriz:

conda list

Kurulu paketlerin listelenmesi

Sanal ortamı silmek istediğimizde önce deaktif etmeliyiz:

conda deactivate

Bu işlem ile conda, öntanımlı olan base ortamı aktif edecektir. Ardından sanal ortamı silebiliriz:

conda env remove -n myenv

Sanal ortamın silinmesi

İhtiyaç duyacağımız diğer komutlar ise şu şekildedir:

Bir paketin silinmesi:

conda remove numpy

Bir paketin güncellenmesi:

conda update numpy

Tüm paketlerin güncellenmesi:

conda update -all

Conda’nın yükseltilmesi:

conda upgrade conda

Tüm paketlerin yükseltilmesi:

conda upgrade -all

Bir paket aramak:

conda search numpy

Paket isminde numpy geçen paketleri aramak için:

conda list | grep numpy

Paket isminde numpy geçen paketleri aramak

Sonraki yazıda bir yaml dosyasında sanal ortamın kurulmasını ele alacağım.

Kaynak:

(1) Mustafa Vahit Keskin Data Science and Machine Learning Bootcamp

(2) https://docs.python.org/3/library/venv.html

(3) https://aur.archlinux.org/packages/anaconda

(4) https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#managing-environments

--

--

Ahmet Okan YILMAZ
Ahmet Okan YILMAZ

Written by Ahmet Okan YILMAZ

Industrial Engineer | Data Scientist | Factory Manager

No responses yet