Merhabalar, bu yazımda size Python ortamında geliştirme yaparken, geliştirmelerinizi diğer proje paketlerinden ayrıştırmak için kullanabileceğiniz sanal ortam oluşturmayı ve kullanımını anlatmaya çalışacağım.

Sanal Ortam – Virtual Environment Neden Var?

Bilgisayarınıza bir Python kurulumu yaptığınızda örneğin 3.9.4 sürümünü kurulmuş olsun, bütün Python projeleriniz için Interpreter bu Python sürümü olarak çalışır. Sisteme farklı farklı paketler yüklediğinizde projeleriniz Python paketlerinin yüklendiği Default dizine yüklenir ve çağırıldığında buradan çalıştırılır. Ortak alandaki paketler sanal ortamı olmayan Python projeleriniz için kullanılır.

Örneğin Pandas’ın 2.0.1 sürümünü kurduk. Bu ortamınızda geliştireceğiniz bütün Python projeleri için kullanılan paket olacaktır.

Diyelim ki 2 yıl önce bir proje geliştirmeye başladınız ve bu projenizde Pandas’ın 2.0.1 sürümünü kullanmıştınız. Proje içindeki bütün paketleriniz de bu sürümünüzle uyumlu. Bugün yeni bir projeye başladığınızı ve sistemi daha güncel paketlerle yürütmek istediğinizi varsayalım. Eğer sisteme Pandas’ın 3.0.0 sürümünü kurarsanız, eski projenizin Pandas Modülü’de artık Pandas 3.0.0 olmuş olacaktır.

Büyük ihtimal diğer paketlerle uyum sorunları çıkacağı için projenizde sadece paket güncellemeleri yüzünden buglar oluşacaktır.

İşte tam bu sebepten her proje için kendi özelinde bir sanal ortam yaratmak, paketleri proje özelinde yönetmek bu tür sıkıntılarınızı ortadan kaldıracaktır. Daha stabil ve bakımı kolay projeler yaratmamıza yardımcı olacaktır.

Yazı boyunca örnekleyeceğim Proje Klasörü – Python Virtual Environment‘dır.

Bu yazıda Python geliştirme editörü olarak Visual Studio Code kullanılmıştır.

Eğer bu editörü şimdi kurmak isterseniz aşağıdaki yazıma göz atabilirsiniz.

1 Proje Klasörünü Oluşturup Visual Studio Code Ortamına Dahil Etme

Bu işlemin nasıl yapıldığını aşağıdaki yazımda anlatmıştım göz atabilirsiniz.

2 Terminali Açma

Bir proje klasörüne odaklanmış şekilde terminali açmak için aşağıdaki adımı takip ediniz.

3 Python Versiyonunu Kontrol Edelim

Açtığımız terminalde aşağıdaki komutu çalıştıralım.

python --version

Benim sistemimde şu anda aktif olan Python Interpreter sürümü 3.9.10 olarak görünüyor.

4 Bir Kaç Satır Kodlama Ve Çıktı Görelim

App.py isminde bir dosya oluşturalım. Dosyamıza aşağıdaki kodları yazıp çalıştıralım.

print("Hello Python Developer")

Kodlarımız Default ortamdaki Python Interpreter’ı sayesinde çalıştırılmış oldu.

5 virtualenv Modülünü Yükleme

Sanal ortamı oluşturabilmek için virtualenv modülünün bilgisayarımızda kurulu olması gerekir.

Terminalde aşağıdaki komutu çalıştıralım.

pip install virtualenv

Paket kurulumu başarıyla gerçekleşti. Bize bir uyarı da verdi aynı zamanda.

WARNING: The script virtualenv.exe is installed in 
'C:\Users\merye\AppData\Roaming\Python\Python39\Scripts' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, 
use --no-warn-script-location.

Virtualenv.exe’nin kurulduğu dizini bize söylüyor ve ekliyor Path değişkenlerine bu yol eklenmedi. Ekleseniz iyi olur eğer uyarıyı tekrar görmek istemiyorsanız ilgili komutu çalıştırın diyor.

Biz bunu hemen ortam değişkenlerimize ekleyelim. Aşağıdaki adımları takip ediniz.

Bende C:\Users\merye\AppData\Roaming\Python\Python39\Scripts şeklinde görülen adres sizde ne olarak görünüyorsa onu kopyalayınız.

Bu işlemi de yaptıktan sonra ekranları Tamam diyerek kapatabilirsiniz.

6 Sanal Ortamı Kurmak

Hangi proje içinde sanal ortamı kurmak istersek o proje içine terminalde odaklanıyoruz.

Kurulacak sanal ortam sistemde kurulu Python sürümü üzerinden kurulur.

Aşağıdaki komutlardan herhangi birini çalıştırarak sanal ortamımızı oluşturabiliriz. İkisi de aynı işlevi görecek.

python -m venv SanalOrtamİsmi

pythton -m virtualenv SanalOrtamİsmi

Burada -m bir modül kullanacağımızı belirtiyor.

venv ya da virtualenv aynı modülü ifade eder. İkisi de kullanılabilir.

Daha sonra sanal ortamımıza bir isim veriyoruz. İstediğiniz ismi verebilirsiniz ama venv ismi standarttır.

Bunu verebilirsiniz.

Ancak ben VirtualEnv ismini vererek oluşturacağım.

pythton -m virtualenv VirtualEnv

Projenizin içine bakarsanız VirtualEnv isminde bir klasör geldiğini göreceksiniz.

İçinde Python kurulumu, Pip paket yöneticisi vs gibi ihtiyacımız olan paketler vardır.

7 Sanal Ortamı Aktifleştir

Projeyi bu sanal ortamdan çalıştırabilmek için öncelikle sanal ortamı aktive etmeliyiz.

Window İçin

.\VirtualEnv\Scripts\activate

VirtualEnv sanal ortamın ismi. Yani sanal ortamınıza ne isim verdiyseniz onu kullanmalısınız.

Linux İçin

source VirtualEnv/bin/activate

Aynı şekilde VirtualEnv sanal ortamın ismidir.

Gösterdiğim gibi parantez içinde sanal ortamınızın ismi yazıyorsa artık sanal ortam içindesiniz demektir. Projenizi çalıştırdığınızda bu sanal ortam içinde kurulu python paketleri kullanılacaktır.

8 Sanal Ortamdan Projeyi Çalıştıralım.

9 Sanal Ortamdan Çıkmak

Sanal ortamdan çıkmak istersek aşağıdaki komutu çalıştırmamız yeterli olacaktır.

deactivate

Sanal ortamdan çıktık.

10 Sanal Ortamla, Local Ortamımızın Nasıl Ayrıştığını Anlamak

Sanal ortamla local ortamımızın nasıl ayrıştığını daha iyi anlamaya çalışalım.

Öncelikle sanal ortamımızdaysak buradan çıkalım.

Local ortamımıza aşağıdaki komutla Pandas modülünü yükleyelim.

pip install pandas

Bu şekilde yükleme yaptığımızda Pandas’ın son sürümü kurulur.

Bu sürümü öğrenebilmek için App.py dosyası içine aşağıdaki kodları yazalım.

import pandas as pd

print(pd.__version__)

Bu kodları yazıp projeyi çalıştırdığımızda bize localde kurulu python sürümünü verecektir.

1.4.3 sürümü varmış.

Sanal ortamı tekrar aktive edelim.

Tekrar çalıştıralım projeyi.

Artık sanal ortamdayız ve bize diyor ki pandas modülü bu ortamda kurulu değil. Halbuki az önce kurmuştum. Buradan da aslında proje sanal ortamının Localimizdeki paketlerle hiçbir alakasının olmadığını anlayabiliyorum. Projenin sanal ortamdayken sadece kendi içinde kurulu modüllere baktığını buradan anlayabiliyoruz.

Gelin buraya da Pandas kuralım. Ancak sanal ortama kuracağımız Pandas sürümü 1.4.2 olsun. Aşağıdaki komutu çalıştırarak bunu yapabiliriz.

pip install pandas==1.4.2

Pandas sürümü kuruldu.

Kurulumdan bir uyarı görüyorum. Pip versiyonumuzun 21.2.4 olduğunu ancak 22.2 versiyonun kullanıma hazır olduğunu bildiriyor. Pip versiyonunu upgrade etmek isterseniz şu kodu kullanabilirsiniz diye bir komut vermiş.

WARNING: You are using pip version 21.2.4; however, version 22.2 is available.
You should consider upgrading via the 'C:\Users\merye\OneDrive\Masaüstü\Python
Virtual Environment\VirtualEnv\Scripts\python.exe -m pip install --upgrade pip' command.

Sanal ortamımızdaki Pip’i de güncel tutmakta fayda var o yüzden güncelleme işlemini yapalım yeri gelmişken. Bunun nasıl yapılacağını öğrenmek için aşağıdaki yazıma göz atabilirsiniz.

Aşağıdaki komutu yürütelim.

python -m pip install --upgrade pip

Güncelleme işlemi gerçekleşmiş olacak.

Şimdi bir sanal ortam aktifken App.py dosyasını çalıştıralım. Bir de deactive edip sanal ortamdan çıkıp çalıştıralım. Nasıl iki farklı çıktı aldığımızı görelim.

Sanal Ortam Aktif

Sanal Ortam Deaktif

Gördüğünüz üzere aktifken 1.4.2 olarak gördüğümüz sürüm, deaktifken 1.4.3 olarak görünüyor.

Umarım sanal ortam sayesinde projemizi nasıl local ortamımızdan ve bu ortamda yapacağımız değişikliklerden yalıttığımızı anlamışsınızdır.

Bonus – VirtualEnv Version Öğrenme

Son olarak kurulu virtualenv versiyonunu öğrenmek isterseniz aşağıdaki komutu kullanabilirsiniz.

virtualenv --version

Bir sonraki yazımızda görüşmek üzere.


Murat Bilginer
21 Şubat 1992'de doğdum. Endüstri Mühendisi olarak lisansımı 2016 yılında tamamladım. Industryolog Akademi - NGenius oluşumlarının kurucusuyum. Şu anda kendi şirketim Brainy Tech ile Web ve Mobil Geliştirme, AWS, Google Cloud Platform Sistemleri için DevOps, Big Data Analiz ve Görselleştirme hizmetleri sunmakta ve Online Eğitimler vermekteyiz.