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.