Qt, çok gelişmiş bir Grafiksel Kullanıcı Arayüz (GKA) (Graphical User Interface, GUI) hazırlama programıdır. Qt ile profesyonel arayüzler hazırlanabilmektedir. Qt'nin bana göre en önemli avantajı birçok işletim sisteminde (Windows, Linux, Mac) kullanılabiliyor olmasıdır. Bu özellik cross-platform olarak geçiyor. Qt'nin ticari ve Açık Kaynak (Open Source) olmak üzere 2 çeşit lisansı mevcuttur. Hobi amaçlı kullanım ücretsizdir. Qt ile yazılım geliştirmek için C++ programlama dilini biliyor olmanız gerekmektedir. C++ programlama dili; son yıllarda kullanım alanı çok hızlı bir şekilde genişleyen, öğrenmesi ve kod yazması kolay olan Python programlama diline göre zor bir programlama dilidir. Python son yıllarda veri bilimi, yapay zeka vb. bir çok alanda çalışan yazılımcıların ilk sıradaki tercihi olmaktadır. Hem Python programlama dilinin nimetlerinden yararlanmak hem de Qt ile arayüz geliştirmek istediğimizde karşımıza PyQt çıkmaktadır. PyQt, Qt'nin mevcut tanımlı özelliklerini Python ile kullanmamızı sağlayan köprü vazifesi gören ayrı bir programdır. Literatürde bu işlem "binding" kelimesi ile tanımlanmaktadır. PyQt Riverbank tarafından geliştirilmiştir. Ticari ve Açık Kaynak (GPL) lisansı vardır. Qt4 kullanımı sağlayan PyQt4 ve son çıkan Qt5 kullanımını sağlayan PyQt5 olmak üzere 2 çeşit Genel PyQt versiyonu vardır. Biz burada PyQt5 kurulumu yapacağız.
1. Önkoşullar
PyQt5 kurulumuna geçmeden Python 3.5 veya daha üst bir Python versiyonunun işletim sisteminize kurulu olması gerekir. Eğer windows işletim sisteminizde Python kurulu değilse Python Windows Kurulumu yazımı okumanızı tavsiye ederim. İlgili yazıda işletim sisteminizde Python'un kurulu olup olmadığını nasıl kontrol edeceğiniz veya hangi Python versiyonunun kurulu olduğunu nasıl öğreneceğinizi bulabilirsiniz. Ayrıca kurulum için kullanmayı planladığımız pip komutunun doğru kullanımı için pip nedir ? pip3 nedir ? nasıl kurulur ? yazımı okuyabilirsiniz.
2. Pip ile PyQt5 Kurulumu
Python programlama dili için yazılım deposu olan PyPI sitesinden pip komutu ile Python paketleri/kütüphaneleri kolay bir şekilde işletim sisteminize kurulur. PyQt5 için aşağıdaki komut çalıştırılarak kurulum gerçekleştirilir.
pip install PyQt5
Kullandığınız pip komutunun işletim sisteminizde yer alan Python versiyonlarından hangisine kurulum yapacağını kontrol ederek doğru Python versiyonu için kurulum yapınız.
Yukarıdaki tablodan görebildiğiniz gibi PyQt5 ile arayüz geliştirmek için 2 farklı seçenek mevcut. Bunlardan birincisi Kod yazarak tasarım ikincisi ise Qt Designer ile tasarım.
3. Qt Designer Kurulumu
Qt Designer ile yapılan tasarım da 2 farklı şekilde; Python kodlarına dönüştürülerek veya Python kodlarıyla birlikte kullanmak üzere Python ortamına yüklenerek kullanılabilir. pip ile yapılan kurulum bize sadece kod yazarak tasarım yapmamızı sağlar. Qt Designer kullanmak için aşağıdaki komut çalıştırılarak Windows işletim sisteminize designer kurulumu gerçekleştirebilirsiniz. Ayrıca bu kurulum ile Qt Designer tasarımını Python kodlarına dönüştüren (pyuic5) dönüştürücüsünün kurulumu da gerçekleştirilir.
pip install pyqt5-tools
Bu komut hakkındaki detaylı bilgiye ve kurulumun tüm detaylarına aşağıda yer alan videoyu izleyerek ulaşabilirsiniz.
PyQt5 ile Grafiksel Kullanıcı Arayüzü (GUI) Geliştirme
PyQt5 ile Grafiksel Kullanıcı Arayüzü (GKA; Graphical User Interface, GUI) tasarımı yapmak için birçok seçeneğimiz var. Bunları 3 başlık altında toplamak mümkün. GUI tasarımını aşağıdaki yöntemlerle gerçekleştirebiliriz.
GUI tasarımını Kod yazarak gerçekleştirme
Qt Designer ile tasarım yapıp tasarımı Python kodlarına çevirme
Qt Designer ile tasarım yapıp bu tasarımı loadUi modülü yardımıyla Python kodlarında kullanmak
Burada PyQt5 kurulumu yaptığınızı varsayıyorum eğer yapmadıysanız PyQt5 kurulumu için önceki yazımı takip edebilirsiniz.
Windows'a PyQt5 Kurulumu
Tasarıma geçmeden önce belirtmem gereken diğer bir husus da PyQt5 ile GUI tasarımı yaparken kullanacağımız GUI araçları hakkında ilgili dökümanlara nasıl ulaşacağımızı bilmemiz konusudur.
PyQt5 sınıf, metod ve fonksiyonlarına aşağıdaki yolu izleyerek ulaşabiliriz:
Başlat > Tüm Programlar > PyQt GPL v5.6 for Python v3.5 (x64) > Documentation > PyQt Reference Guide
bu yolda belirtilen klasör ismi sizin kurmuş olduğunuz PyQt5 versiyonuna göre farklı olabilir.
Kurulum ve PyQt5 dökmümanlarına ulaşma konusundan bahsettikten sonra arayüz geliştirme yöntemlerine geçebiliriz.
1. Kod Yazarak Arayüz Geliştirme
Tüm 3 yöntem için de aynı arayüzü tasarlayacağız. Bunun için hem basit hem de sinyal-slot yapısını kullanacağımız bir tasarıma karar verdim. Qt'nin en önemli özelliklerinden biri de sinyal-slot(yuva) yapısıdır. Bu yapıyı bir örnekle açıklamaya çalışalım. Arayüzde bir tuşa bastığımızda tıklandı (clicked) sinyali yayınlanır ve bu tuşa basıldığında yapılacak işleri (dosya seçme, kamera açma, yazıyı silme, aklınıza gelebilecek herşey) yazdığımız slot'da belirtmemiz gerekir. Slot burada bir fonksiyondur. Bizim tek yapmamız gereken sinyal ile slot bağlantısını "connect" işlevi ile tanımlamak. Geliştireceğimiz arayüz aşağıdaki ekran görüntüsünde gösterilmiştir. Bu arayüz bir etiket (QLabel) iki tane düğmeden (QPushButton) oluşmaktadır. Etikette "Merhaba PyQt5" yazmaktadır. Temizle düğmesi ile etikette yazan yazı silinmektedir. Göster düğmesi ile etikete yeniden "Merhaba PyQt5" yazılmaktadır.
Bu arayüzü elde etmek için yazacağımız kod aşağıda belirtilmiştir.
1 nolu satır yorum satırıdır. Burada isterseniz yorum satırında belirtildiği gibi kullanacağınız arayüz bileşenlerini tek tek ekleyebilirsiniz ya da 2 nolu satırda belirtildiği gibi
QtWidgets
sınıfına ait tüm bileşenler eklenir. 3 nolu satırda
QtCore
sınıfına ait metodlar eklenir.
6
7
classfirst_GUI(QWidget):def__init__(self):
6 nolu satırda
QWidget
sınıfından ürettiğimiz "first_GUI" adında sınıfı tanımlıyoruz. Burada QWidget yerine
QDialog
ya da
QMainWindow
tipinde bir sınıf oluşturabilirdik.
Her sınıfın
__init__()
fonksiyonu vardır ve sınıf çağrıldığında ilk olarak bu fonksiyon çalıştırılır.
self
ifadesi bir sınıfta tanımlanan değişkenlerin, fonksiyonların sınıf dışından çağrılabilmesi için o sınıfa ait bir fonksiyon, değişken olduğunu belirtmek için kullanılır.
C++
programlama dilinde kullanılan
this
ifadesi ile aynı kullanıma sahiptir.
8 ve 9 nolu satırlar yorum satırıdır. Bu satırları yazmamın sebebi 10 nolu satıra alternatif olarak kullanılabiliyor olmalarıdır.
super()
fonksiyonu miras alma (inheritance) durumunda kullanılan miras aldığımız bir üst (parent, base) sınıfın nitelik ve metodlarını kullanmamızı sağlar. 8 nolu satır eski tip super() fonksiyonudur. 9 nolu satır ise Python 3 ile yeni kullanılmaya başlayan super() fonksiyonudur. 10 nolu satır ile üst sınıfın __init__() fonksiyonu çağrılır. 10 nolu satırı ya da yerine 9 nolu satırı yazmaksak programımızı çalıştırdığımızda hata alırız.
12 nolu satırda
QLabel
etiket parçacığı (widget) "Merhaba PyQt5" yazısını içerecek şekilde oluşturulur. Nesne adı (object name) "label_text" olarak tanımlanmıştır ve sınıf dışında (slot tanımlamalarında) bu etikete ulaşmamız gerekeceğinden bu parçacık self ifadesiyle tanımlanmıştır.
13 nolu satırda etiket içerisinde yazan yazının hizalaması ortalanmıştır. Bu hizalamayı
setAlignment
fonksiyonu sağlamaktadır.
14 nolu satırda etikette yazan yazının rengini, font büyüklüğünü ve font kalınlığını
setStyleSheet
fonksiyonunu
CSS
tanımlamaları kullanarak ayarlıyoruz.
16 nolu satırda üzerinde "Temizle" yazan
QPushButton
(buton, düğme, tuş) parçacığı tanımlıyoruz. Bu düğmenin minimum yüksekliğini 40 piksel olarak 17 nolu satırda
setMinimumHeight
fonksiyonunu kullanarak tanımlıyoruz. 18 nolu satırda daha önce etiket için yaptığımız gibi
setStyleSheet
fonksiyonunu kullanarak düğme üzerinde yazan yazının font özelliklerinde daha güzel görünmesini sağlayacak değişiklikler yapıyoruz. Bu düğmemizin adını "pushButton_clear" olarak tanımlıyoruz. Ben hangi parçacık olduğunu belirten (pushButton) ve ne işe yarayacağını belirten kelimeleri birleştirerek isimlendirme yapıyorum. Böylece kod içerisinde hangi tipte bir düğme olduğunu ve ne işe yaradığını anlamak kolay oluyor ve kodun anlaşılabilirliğini arttırıyor. Burada etiketten farklı olarak oluşturduğumuz düğmeyi self'e atamadık çünkü sınıf dışında ihtiyacımız olmayacak eğer ihtiyaç duyarsak self olarak tanımlamalıyız. 19, 20 ve 21 nolu satırlar önceki satırların 2. düğme olan "Göster" düğmesini oluşturmamıza ve aynı işlemleri onun üzerinde yapmamızı sağlamaktadır.
23 ve 24 nolu satırlar sinyaller ile fonksiyonları (slotları) birbirine
connect
metodunu kullanarak bağladığımız satırlar. "Temizle" düğmesinin
clicked
sinyalini "clear_text" fonksiyonuyla birbirine bağladık ve "Temizle" düğmesine tıklandığında "clear_text" fonksiyonu çağrılacaktır. "Göster" düğmesinin
clicked
sinyalini de "show_text" fonksiyonuna bağladık. Kod yazarken türkçe karakter kullanamadığımızdan anlaşılabilir olması için ingilizce değişken ve fonksiyon adı kullanmayı tercih ediyorum.
26 nolu satırda dikey yerleşim düzeni (
QVBoxLayout
) tanımlıyoruz ve 27, 28, 29 nolu satırlarda
addWidget
fonksiyonunu kullanarak sırasıyla oluşturduğumuz etiket ve düğmeleri bu dikey yerleşim planı içerisine ekliyoruz. Tasarımınıza göre Yatay yerleşim düzeni (
QHBoxLayout
) veya ızgara yerleşim düzeni (
QGridLayout
) kullanabilirsiniz.
31
32
33
self.setLayout(vertical_layout)self.setWindowTitle("PyQt5 first GUI")self.resize(400,300)
31 nolu satırda oluşturduğumuz dikey yerleşim düzenini sınıfımızın (oluşturacağımız arayüzün) yerleşim düzeni olmasını sağlamak için
setLayout
fonksiyonuyla tanımlıyoruz. 32 nolu satırda arayüzün gösterileceği pencerenin adının "PyQt5 first GUI" olmasını
setWindowTitle
fonksiyonunu kullanarak sağlıyoruz. 33 nolu satırda açılacak pencerenin boyutlarını yüksekliği 300 piksel, genişliği 400 piksel olacak şekilde
resize
fonksiyonunu kullanarak ayarlıyoruz. Bu satır ile "first_GUI" sınıf tanımlaması bitmiştir.
36
37
defclear_text(self):self.label_text.clear()
36 nolu satırda "Temizle" düğmesinin tıklama sinyaline bağlanan "clear_text()" slotunu (fonksiyonunu) tanımlıyoruz. Değişken olarak self değişkenini almaktadır. İşlem olarak
QLabel
sınıfının
clear()
fonksiyonu ile etiket içerisinde yazan yazı temizlenir.
39 ve 40 nolu satırlarda "Göster" düğmesinin "show_text()" slotu tanımlanmaktadır. Bir etikete yazı yazmak için kullanılan
setText()
fonksiyonu ile bu düğmeye tıklandığında "Merhaba PyQt5" yazısı yazacaktır. Bu düğmenin yaptığı işi gözlemlemek için öncelikle etikette yazan yazı silinmelidir.
Sınıf ve slot tanımlamalarından sonra 42 nolu satırda
QApplication
sınıfından "app" adında bir nesne tanımlıyoruz. 43 nolu satırda "first_GUI" adında tanımladığımız sınıftan "widget" adında bir nesne tanımlıyoruz. Bu nesnenin
show()
fonksiyonunu kullanarak arayüz için oluşturduğumuz pencereyi gösteriyoruz (44 nolu satır). 45 nolu satırda
QApplication
sınıfının
exec_()
fonksiyonu ile sonsuz bir döngü oluşturulur. Bu ifade ile kullanıcının arayüzü kullanarak fare ve klavye ile yapmış olduğu tüm işlemler yakalanarak komutlar yerine getirilir. Pencere kapatılana kadar döngü devam eder.
Böylece kod yazarak kullanıcı arayüzü geliştirmiş olduk. Python kodlarından farklı olarak yazdığımız kodu (Windows için)
.pyw
uzantılı olarak kaydediyoruz.
İlk yöntemde her şeyi kod yazarak tanımladık. Bu çok uzun bir işlem olmasa da Qt Designer ile tasarım yapmak sizin için uygun olabilir. Bunun için PyQt5 kurulumu ile birlikte gelen Qt Designer açılır.
Kod yazarak yaptığımız tasarımın aynısını Qt Designer ile yaptık. Aşağıdaki videoyu izleyerek tasarımın nasıl yapıldığını izleyebilirsiniz.
Qt Designer ile yapılan tasarımı
.ui
uzantılı olarak kaydediyoruz. Daha sonra komut satır (cmd) programı açılır. Tasarımı kaydettiğimiz klasöre geçiyoruz ve Python kurulumunun gerçekleştiği klasörde yer alan (“C:\Program Files\Python35\Lib\site-packages\PyQt5\")
pyuic5.bat
designer ile (.ui uzantılı) yaptığımız tasarım ve bunun Python kodlarına çevrileceğinde hangi isimle kaydedileceğini tanımlayarak çalıştırılır. Örnek kodu aşağıda bulabilirsiniz.
Bu kodu çalıştırarak tasarımı Python kodlarına çevirdik. Tasarımda yapacağımız her işlemden sonra kodu çalıştırarak bu dönüşümü gerçekleştirmemiz gerektiğinden yazacağımız kodları otomatik oluşturulan bu Python koduna yazmıyoruz bunun yerine bu kodu kullanacak başka Python kodu (wrapper) yazacağız. Qt Designer ile tasarım yaptığımızda sinyal-slot bağlantısı için 3 farklı yöntem mevcuttur.
Kod yazarak sinyal-slot bağlantısı yapma
Qt Designer ile sinyal-slot bağlantısı yapma
@pyqtSlot() ile sinyal-slot bağlantısı yapma
2.1. Kod Yazarak Sinyal-Slot Bağlantısı Yapma
Python koduna dönüştürülen tasarımı kullanmamızı sağlayan ve sinyal-slot bağlantısının kod yazılarak yapıldığı Python kodunu (wrapper) aşağıda bulabilirsiniz.
Burada satır satır açıkladığımız ilk yöntemden farklı olarak 2 nolu satırda .py uzantılı tasarımın Python kodlarına dönüştürüldüğü dosya adını kullanarak (designer_example)
Ui_MainWindow()
modülü eklenmiştir.
8 ve 9 nolu satırlarda tasarım kodumuz mevcut Python koduna eklenmiştir. Bu işlem için
setupUi()
fonksiyonu kullanılmıştır ve ilk yöntemden farklı olarak atama self değişkenine değil de
self.ui
değişkenine yapılmıştır.
11 ve 12 nolu satırlarda kod yazarak sinyal-slot bağlantıları yapılmıştır. Diğer satırlarda yer alan kodlar ilk yöntemde açıklandığından burada tekrar açıklanmayacaktır.
2.2. Qt Designer ile Sinyal-Slot Bağlantısı Yapma
Sinyal-Slot bağlantısını kod yazarak değil de Qt Designer ile de yapabilirsiniz. Yazı ile bu işlemi anlatmak zor olduğundan dolayı aşağıdaki videoyu izleyerek bağlantının nasıl yapıldığını öğrenebilirsiniz.
Burada
2.1
yönteminde yazmış olduğumuz Python kodlarında yer alan sinyal-slot bağlantılarının yapıldığı 11 ve 12 nolu satırları siliyoruz çünkü bu satırlara ihtiyacımız yok. Bu satırları sildikten sonra kalan kısımları tasarımı yükleme ve tasarlanan arayüzü çalıştırmak için kullanabilirsiniz.
2.3. @pyqtSlot() ile Sinyal-Slot Bağlantısı Yapma
pyqtSlot dekoratörü ile sinyal-slot bağlantısının nasıl yapıldığını aşağıdaki video'yu izleyerek öğrenebilirsiniz.
Qt Designer ile yapmış olduğumuz tasarımı kullanabilmek için yazmış olduğumuz Python kodlarında sinyal-slot bağlantısı için pyqtSlot dekoratörü kullandığımızda slot tanımlamalarından bir satır önce
@pyqtSlot()
ifadesi eklenir. Burada Slot ismini belirlerken istediğimiz ismi yazamıyoruz belirli bir kurala göre isimlendirme yapmamız gerekiyor. İsimlendirmede kullanacağımız parçacığın nesne adı (object name, bunu designer'dan parçacığa tıkladığımızda sağ tarafta görebilirsiniz) ve kullanılacak sinyal aşağıdaki formatta yazılır:
on_
nesne_adi_
sinyal_adi()
Örnek slot tanımlamalarını aşağıdaki Python kodunun 14 ve 18. satırlarında görebilirsiniz.
Burada önceki kodlardan farklı olarak
QtCore
sınıfından
pyqtSlot
2 nolu satırda gösterildiği gibi eklenir.
3. Qt Designer ile Tasarım + loadUi modülü ile bu Tasarımı Kullanma
İkinci yöntemde tasarımda yaptığınız her değişiklik sonrasında tasarımı Python kodlarına çevirmek için pyuic.bat çalıştırılır. Bu kod çalıştırma işlemi size zahmetli bir iş olarak gelebilir. Tüm bunlarla uğraşmadan Qt Designer ile yapmış olduğunuz tasarımı kolay bir şekilde dönüşüm yapmadan kullanabileceğiniz bir yöntem mevcut. Qt Designer ile yapmış olduğumuz tasarımı kullandığımız Python kodu aşağıda verilmiştir.
Burada diğer yazdığımız kodlardan farklı olarak 4 nolu satırda
uic
modülünde yer alan
loadUi
fonksiyonu eklenmiştir ve bu fonksiyon 10 nolu satırda .ui uzantılı tasarımı yüklemek için kullanılmıştır. Burada sinyal-slot bağlantısı
2.3
bölümünde anlatıldığı gibi pyqtSlot() dekorlayıcısı kullanılarak yapılmıştır. Diğer kodlar daha önce açıklandığından tekrar açıklanmayacaktır. Sanırım PyQt5 ile GUI geliştirmek için en ideal yöntem son olarak bahsettiğimiz üçüncü yöntem gibi gözüküyor.
Python Sanal Ortam (virtualenv, virtualenvwrapper) Kurulumu/ Kullanımı
Neden Sanal ortam kurmaya ihtiyaç duyduğumuza önceki pip/pip3 nedir ? yazısında değinmiştim. Python programlama dilinde genel olarak Python2 ve Python3 olmak üzere 2 genel versiyon vardır. Bu versiyon farklılıkları aslında gelişmekte olan tüm programlarda, kütüphanelerde mevcuttur. Örneğin bir uygulamanız bir kütüphanenin 1.0 versiyonuna ihtiyaç duyarken başka bir uygulamanız aynı kütüphanenin 2.0 versiyonuna ihtiyaç duymaktadır ve aynı anda aynı kütüphanenin 2 farklı versiyonunu çalıştırmamız mümkün olmadığından sanal ortamlara olan ihtiyaç tam bu noktada ortaya çıkmaktadır. Sanal ortamlar kurarak birbirinden bağımsız aynı kütüphanelerin farklı versiyonlarını kullanmak mümkündür. Sanal ortam kurmak için bir kaç seçenek mevcuttur. Ben burada virtualenv ve bu sanal ortamın kullanımını kolaylaştıran virtualenvwrapper'dan bahsedeceğim.
virtualenv
birbirinden bağımsız (yalıtılmış,izole) Python ortamları oluşturmak için bir araçtır. virtualenv diğer sanal ortamlarla kütüphanelerini paylaşmayan kendi kurulum dizinine (klasörüne) sahip sanal ortamlar oluşturur.
virtualenvwrapper
virtualenv aracını daha kolay bir şekilde sanal ortam oluşturma, silme, yönetme amacıyla kullanmamızı sağlayan başka bir araçtır.
1. Bilgisayarınıza virtualenv/virtualenvwrapper Kurulu Olup Olmadığının Kontrol Edilmesi
İşletim sisteminize virtualenv ve virtualenvwrapper araçlarının yüklü olup olmadığını aşağıdaki komutları sırasıyla çalıştırarak kontrol edebilirsiniz.
virtualenv --version
virtualenvwrapper --version
2. virtualenv/virtualenvwrapper Kurulumu
Eğer sisteminizde bu araçlar kurulu değilse aşağıdaki komutları çalıştırarak kurulumu gerçekleştirebilirsiniz.
Sadece virtualenvwrapper kurulumu yaptığınızda virtualenv kurulumu da otomatik yapılmaktadır. Tekrar versiyon öğrenmek için kullandığımız komutu çalıştırdığımızda muhtemelen aşağıdaki ekran görüntüsüne benzer bir sonuç alacaksınız. Burada 16.0.0 versiyonu kurulmuştur.
virtualenvwrapper
için versiyon kontrolü yapmadan önce yapmamız gereken birkaç işlem mevcuttur. Root klasörü (/) içerisinde
virtualenvwrapper.sh
shell betiğinin (script) nerede olduğuna bakıyoruz ve
/usr/local/bin/
dizininde olduğunu görüyoruz.
virtualenvwrapper
bir takım shell fonksiyonlarından oluşmaktadır ve bu sebeple shell başlangıç dosyasına (startup file) aşağıdaki satırları eklememiz gerekmektedir. Shell başlangıç dosyaları .bashrc veya .profile ismindeki dosyalardır. Bu dosyaların adının önünde nokta (.) bulunduğundan bu dosyalar linux işletim sisteminde gizli dosya olarak algılanmaktadır. Bu tür dosyalar genelde konfigurasyon bilgileri içerdiğinden genelde gösterilmezler. Bu dosyaları görmek için
Home (~)
dizininde
ctrl+H
kısayol tuşlarına basmanız gerekir. Bu kısayol tuşlarına bastığımızda aşağıdaki ekran görüntüsüne benzer bir sonuç elde ederiz ve aradığımız
.bashrc
burada yer almaktadır. .bashrc siz terminali her açtığınızda çalıştırılan shell komut dosyasıdır.
export
ifadesi ile WORKON_HOME ve PROJECT_HOME değişkenleri tanımlandıkları yerin dışında da kullanılabilir hale geldiler.
source
ifadesi ile shell fonksiyonlarının yer aldığı
virtualenvwrapper.sh
bir kez çalıştırılır. İsterseniz
#
ile bu satırların üzerine unutmamanız için yorum yazabilirsiniz. .bashrc kaydedildikten sonra başka bir değişiklik yapılmadan kapatılır ve aşağıdaki komut ile .bashrc bir kez çalıştırılır.
source ~/.bashrc
yapılan işlemlerden sonra virtualenvwrapper'ın versiyonunu öğrenmemizi sağlayan komut tekrardan çalıştırılır. Eğer virtualenvwrapper hakkında bilgilerin yer aldığı bir sonuç ekranı ile karşılaştıysanız buraya kadar yapılan işlemlerin doğru olduğunu gösterir.
3. Yeni Sanal Ortam Oluşturma :
mkvirtualenv
Yeni sanal ortam oluşturmak için kullanılan mkvirtualenv komutunun kullanımı aşağıdaki gibidir:
mkvirtualenv yeni_sanal_ortam_adi
Yeni sanal ortam oluştururken python 2 ya da python 3 seçimi yapmamız mümkündür. İlgili dökümana buradan ulaşabilirsiniz ya da
virtualenv --help
komutunu çalıştırarak ulaşabilirsiniz.
4. Python versiyonuna Göre Yeni Sanal Ortam Oluşturma
Python2 için yeni sanal ortam oluşturma
mkvirtualenv yeni_sanal_ortam_adi -p python2
Python3 için yeni sanal ortam oluşturma
mkvirtualenv yeni_sanal_ortam_adi -p python3
5. Mevcut Sanal Ortamı Kapatma :
deactivate
mevcut sanal ortam içerisindeyken aşağıdaki komut çalıştırılarak sanal ortamdan çıkış yapılır.
deactivate
6. Mevcut Sanal Ortama Geçiş Yapma :
workon
daha önceden oluşturulmuş sanal ortama geçiş yapmak için aşağıdaki komut çalıştırılır.
workon sanal_ortam_adi
7. Sanal Ortama Kurulan Paketlerin Listelenmesi :
lssitepackages
sanal ortama kurulan paketleri listelemek/görüntülemek için aşağıdaki komut çalıştırılır.
lssitepackages
8. Oluşturulan Sanal Ortamların Listelenmesi :
lsvirtualenv
oluşturmuş olduğunuz tüm sanal ortamları listelemek için aşağıdaki komut çalıştırılır.
lsvirtualenv
9. Mevcut Sanal Ortamın Silinmesi :
rmvirtualenv
oluşturmuş olduğunuz sanal ortamı silmek için aşağıdaki komut çalıştırılır.
Python Wheel, Python için standart kabul edilen paket dağıtım formatıdır. Wheel özel olarak biçimlendirilmiş (formatlanmış) bir dosya adı ve .whl uzantılı ZIP biçiminde bir arşiv dosyasıdır. Python'un egg formatı yerine getirilmiş ihtiyaç duyulan tüm Python içeriklerinin bir arada bulunmasını sağlayan bir arşiv dosyasıdır. Bu yazının yazıldığı tarih itibariyle PyPI yazılım deposunda en çok indirilen 360 paketten 263'ü wheel formatındadır. pip komutu ya source distribution (sdist) ya da wheel kurulumu yapmaktadır. Eğer PyPI yazılım deposunda her ikisi de mevcutsa pip, wheel formatındaki paketi kullanarak kurulum yapmayı tercih etmektedir. Source distribution (sdist) ile kıyaslandığında wheel ile daha hızlı kurulum yapılmaktadır. Wheel (.whl uzantılı) dosyayı aşağıdaki komutu çalıştırarak bilgisayarınıza kurabilirsiniz.
pip install paket_adi.whl
Eğer bilgisayarınıza Wheel kurulu değilse aşağıdaki komutları çalıştırarak wheel kurulumu yapılabilir.