Tüm yazılım dillerinde çeşitli kütüphaneler yazılır ve programcılar projelerine bu kütüphaneleri ekleyerek hız ve kolaylık sağarlar. Nodejs’te npm ve yarn, PHP’de composer, Java’da maven ve gradle paket yöneticileri vardır. Bu paket yöneticileri o dilde yazılmış kütüphaneleri projeye ekleme veya sistem geneline ekleme gibi özelliklere sahiptir. Python’da da aynı işi yapmak mümkündür.
Python’da “pip” adı verilen paket yöneticisi vardır. Açılımı Package Installer for Python’dır. Bu paket yöneticisi python paketlerini mevcut kullanıcının home klasörüne veya root olarak çalıştırırsanız sistem geneline kurar. Kısaca komut satırı şu şekildedir:
$ pip install urllib3
Bu komutu verdiğimizde mevcut kullanıcının home klasörüne paketi kurar. Diğer kullanıcılar bu paketlere erişemez. Tüm sistem genelinde paketi kurmak için aşağıdaki komutu yazarız:
$ sudo pip install urllib3
Sudo veya root hesabıyla giriş yapıp komutu çalıştırdığımızda sistem geneline paket kurulur. Fakat şöyle bir sıkıntı var. Her proje farklı paketler kullanır, aynı paketin farklı versiyonlarını kullanır. Yani paketin sistem geneline kurulması bazen sorun çıkarabilir. Her paketin o proje klasörüne kurulması daha sağlıklı bir geliştirme yapmayı sağlar. Yukarıda da belirttiğim gibi diğer dillerdeki paket yöneticileri proje klasörüne paketleri kurma özellikleri vardır. Python’da bu işlemi yapabilmek için “Virtual Environment” kısaltması olan “venv” komutu kullanılmalıdır.
Venv projeniz için bir sanal python ortamı oluşturur. Aslında bu sanal ortam değildir, sadece paketlerinizin proje klasörünün altında veya farklı bir klasörde olmasını sağlayan yardımcı bir araçtır. Venv’i sistem geneline kurmamız gerekir ve şu komutla kurabiliriz:
$ sudo pip3 install virtualenv
Artk venv komutunu kullanarak projelerimize ait sanal ortam klasörleri oluşturarak paketlerimizi projemizin olduğu klasörde toplayabiliriz. Şimdi bunu nasıl yapacağımıza bakalım.
$ mkdir PythonEnvExample # proje klasörünü oluştur $ cd PythonEnvExample # proje klasörüne geç $ python3 -m venv .env # sanal ortam klasörünü oluştur $ chmod +x .env/bin/* # bin klasörü altındaki tüm dosyalara çalıştırma yetkisi ver $ nano app.py
# app.py dosyası içeriğidir
import urllib3
http = urllib3.PoolManager()
r = http.request('GET', 'https://google.com.tr')
print(r.status)
print(r.data)
$ .env/bin/pip install urllib3 # paketi şuanki proje klasörünün altındaki venv klasörü altına kuruyoruz $ .env/bin/python app.py # artık python projemizi sistem genelindeki python programıyla değil sanal ortam klasöründeki python programıyla çalıştırıyoruz
urllib3 paketini “.env/lib/python3.6/site-packages/urllib3/” klasörü altına kurulduğunu görmekteyiz. Ayrıca Pycharm’da projedeki virtual env’i otomatik olarak bularak python yorumlayıcısını ve paket yöneticisini (python ve pip) kullanır. Projeyi çalıştırmak ve paketleri otomatik kurmak için kolaylık sağlamaktadır.
İşin önemli iki noktası var. Birisi venv/bin/activate komutuyla sanal ortamı aktifleştirmek, diğeri de artık paket yöneticisi ve python için sanal ortam klasöründeki bin klasöründeki çalıştırılabilir dosyaları kullanmak (pip ve python komutları)
Kabaca sanal ortam kurulumu ve paketlerin mevcut klasör altına kurulması bu şekildedir. İlerleyen zamanlarda bu konularda daha detaylı örnekler vereceğim. Takipte kalın. Bol yılanlı günler dilerim 🙂