Kurs

Geliştiriciler için çalışma istasyonlarının doğru yapılandırılması, geliştirme deneyimini kolaylaştırır. Buna en iyi araçların kurulumu ve yapılandırılması ile yazılım oluşturma sürecinde geliştiricinin en iyi performansı göstermesini sağlayacak tüm olanakların ayarlanması dahildir. Veri bilimciler de bu ihtiyacın istisnası değildir; görselleştirme araçlarından veri alım süreçlerine kadar benzersiz yazılımlar oluşturmak için doğru bir kurulum kritik öneme sahiptir. Bu eğitimde, Veri bilimi için bilgisayar kurulumunun temelleri açıklanacaktır; ancak bu rehber Python diliyle yazılım geliştirmek isteyen herkes için de faydalı olacaktır. Haydi başlayalım!
Kapsam
Python çok çeşitli işletim sistemlerinde kullanılabilir. Bu eğitimde, Linux Ubuntu işletim sistemi üzerinde çalıştırılmış bazı komut parçacıkları gösterilecektir; ancak bunlar diğer UNIX tabanlı sistemler ve MAC OS için de büyük ölçüde geçerlidir. MS Windows sistemleri için de uygulanabilir yerlerde belirtilecek küçük farklar vardır.
Python: Merkez Parça
özetle: Resmi web sitesindeki Python3 sürümünü kullanın
Python yorumlayıcısını, bu dile dayalı uygulama geliştirme için merkez parça olarak görmek oldukça doğal görünebilir. Ancak bu noktada, hangi Python yorumlayıcısının en iyisi olduğu konusunda kararsız kalabilirsiniz. Dahası, dilin iki farklı sürümünden bahsedildiğini duymuş olabilirsiniz; bu nedenle doğru sürüm ve yorumlayıcıyı seçmek, verilmesi gereken ilk önemli karardır.
Python, Anaconda, Jython, WinPython, IronPython... Tek Kafes İçin Fazla Yılan
Dilin popülerliği nedeniyle, yorumlayıcının pek çok uygulaması vardır. Bazıları bilgisayarınıza kurulmaya hazırdır, bazıları ise erken geliştirme aşamasındadır ve kurulumu yalnızca geliştiricilerine veya gözü pek programcılara önerilir. Resmi Python wiki’si, mevcut yorumlayıcılardan bazılarını listeler ve diğer uygulamalara kıyasla sundukları belirli özelliklere işaret eder. Bu eğitim boyunca göreceğimiz gibi, resmi web sitesinde bulunan Python dağıtımı, diğer uygulamaların sunabileceği özellikleri kaçırmadan Python programlarınızı geliştirmeye başlamanız için gereken her şeyi içerir.
Python2 mi Python3 mü? Hangi Sürümü Kullanmalısınız?
Python 3 on yıl önce yayınlanmış olsa da, önceki Python 2’den en yeni sürüme geçiş pek de kolay olmadı. Düşük benimseme oranının başlıca nedenlerinden biri, mevcut kütüphanelerin son sürüm için hazır olmamasına yol açan sözdizimi farklılıklarıydı. Python yazılımı geliştirirken fark edeceğiniz üzere, her türlü amaç için kütüphane bulunabilirliği bu dilin kilit güçlü yanlarından biridir. Bu süre zarfında, mevcut yazılımların en yeni sürüme taşınmasını kolaylaştırmak için 2to3 veya six gibi bir dizi araç ve kütüphane geliştirildi. Bu eğitimin yazıldığı tarihte, kütüphanelerin çok büyük bir çoğunluğu Python 3 uyumlu yazılımlar için hazır durumdadır; dolayısıyla hangi sürümün kullanılacağına dair karar oldukça net: Python 3. Ayrıca, 2020 itibarıyla Python 2 yaşam döngüsü sona erecektir. Hatta PyCon 2020 etkinliğinde bir Yaşam Kutlaması partisi planlayanlar bile var; Python2’nin sizin ve yazılımlarınız için yaptıklarına teşekkür etmek üzere onlara katılmaktan çekinmeyin!
Bilgisayarınıza Python Kurmak
Python yorumlayıcısı çoğu işletim sistemi için yaygın olarak mevcuttur; hatta bazıları kurulumu kolaylaştıran paketler sunar. Ubuntu’da Python2 ve Python3 masaüstü ortamlarında varsayılan olarak birlikte bulunur. halen Python sürüm 2 için geçerli olan python takma adını 3’e göre değiştirmeyi ya da işinize yararsa ~/.bashrc dosyanıza bir takma ad tanımlamayı düşünebilirsiniz. Yukarıda belirtildiği gibi, önümüzdeki yıllarda yalnızca tek bir Python sürümünün kurulu olması beklenmektedir. Bu noktada önerim, Python’un en güncel sürümünü kurmanızdır. Bilgisayarınızda halihazırda Python3 yüklüyse, sürümün 3.5’ten yüksek olduğunu kontrol edin. Daha eski bir sürüm yüklüyse, yükseltmeniz ve dilin en yeni özelliklerinin tadını çıkarmanız tavsiye edilir.
$ python --version
Python 3.5.2
Windows kullanıcıları için de Python yorumlayıcısı kurmak oldukça basittir. Resmi indirme sayfası, yalnızca birkaç tıkla yorumlayıcıyı kurmanıza yardımcı olan bir yükleyici sunar.
pip ile Proje Bağımlılıklarını Yönetmek

Temel geliştirme için, Python yorumlayıcısının kurulmuş olması koda başlamanız için yeterlidir. Python yazılım paketi yorumlayıcının yanında uygulama yönetimini kolaylaştırmaya yönelik bazı olanaklarla birlikte gelir. Bu araçlardan biri pip’tir ve amacı, PyPI (Python Package Index) veya diğer açık/özel depolarda saklanan üçüncü taraf kütüphaneleri kurmanıza yardımcı olmaktır.
İlk Python Projemiz: Jupyter Notebooks
İlk Veri bilimi projemizi düşünelim: Bazı verileri işleyip etkileyici görselleştirmeler sunacak bir Jupyter defteri. Defterlerle çalışmak için gerekli ilk kütüphane Jupyter olacaktır. Bilgisayarınıza Jupyter kurmak şu kadar basittir:
$ pip install --user jupyter
--user seçeneğinin, kütüphaneyi yalnızca komutu çalıştıran kullanıcı için kuracağını unutmayın. Sistem genelinde kurulum bu seçenek çıkarılarak yapılabilir; ancak kurulumu tamamlamak için ayrıcalıklı kullanıcı olmanız gerekebilir. Kurulumun yanı sıra, pip komutu kütüphane indirme, geçerli yapılandırmayı sorgulama, yükseltme ve artık gerek duyulmadığında kütüphaneyi kaldırma işlemlerini de sunar. Aşağıdaki tablo, uygulama ihtiyaçlarınızı yönetirken işinize yarayacak bazı komutları listeler:
| Komut | Açıklama |
|---|---|
pip install <package> |
Bir paketi kurar |
pip install --user <package> |
Bir paketi tek bir kullanıcı için kurar |
pip install --upgrade <package> |
Bir paketi günceller |
pip uninstall <package> |
Bir paketi kaldırır |
pip download <package> |
Bir paketi indirir |
pip freeze |
Kurulu paketleri listeler |
pip install -r requirements.txt |
Verilen requirements.txt dosyasında listelenen paketleri kurar |
pip show <package> |
Paket hakkında bilgi gösterir |
Yukarıda listelenen komutlara, proje bağımlılıklarını yönetmek için tekrar döneceğiz. Şimdilik, pip’i uygulamanızın bağımlılık yöneticisi olarak aklınızda tutun. Son olarak, bilmeniz gereken önemli bir nokta da, pip komutunun yalnızca talep edilen kütüphaneleri değil, onların bağımlılıklarını da kurduğudur; bu nedenle karmaşık kurulum süreçleriyle uğraşmanıza gerek kalmaz. pip install ile yolunuza devam edin!
Sanal Ortamlar: Proje Ayarlarınızı İzole Edin

Defter projeniz üzerinde çalışırken, yapılandırmanıza eklemeden önce denemek istediğiniz bazı özellikleri sunan yeni ve parlak bir kütüphane keşfettiğinizi hayal edin. Bu kütüphane, farklı bir jupyter notebooks sürümünün kurulu olmasını gerektiriyor. Bu noktada şu seçeneklere sahipsiniz:
- Yeni paketi bağımlılıkları olmadan kurmak. Kütüphane, kodunda bazı değişiklikler yapmadıkça muhtemelen düzgün çalışmayacaktır.
- Yeni paketi bağımlılıklarıyla birlikte kurmak. Mevcut projeniz etkilenecek, proje yapılandırmasını yükseltmeye zorlayacak ve beklendiği gibi çalışması için bazı değişiklikler yapmanız gerekecektir.
Anlatılan senaryolar, iki projede eşzamanlı çalışırken ortaya çıkabilir. İkiden fazla projede çalıştığınız veya kurulu olmasını istediğiniz bir kütüphaneye bağlı bir dizi Python tabanlı uygulamaya sahip olduğunuz daha karmaşık durumları düşünün. Bu gerçek bir baş ağrısına dönüşebilir. Neyse ki Python, proje yapılandırmasını diğer projelerden veya uygulamalardan izole etmenizi sağlayan bir mekanizma sunar. Bu mekanizma Sanal Ortamlar olarak adlandırılır ve her ne kadar Python 2 döneminde diğer izolasyon yaklaşımlarıyla birlikte mevcut olsa da, 3.6 sürümünden itibaren yerleşik bir paket haline gelmiştir (bu sürümü veya daha yenisini kurmanız önerilir!). 3.6’dan daha eski Python yorumlayıcıları, kütüphaneyi pip ile şu şekilde kurabilir:
$ pip install -U venv
Python2 kullananlar (yükseltmeyi tercih etmedikleri sürece) için kütüphanenin adı virtualenv’dir ve aynı şekilde kurulabilir.
$ pip install -U virtualenv
Ubuntu kullanan geliştiriciler, virtualenv’i bir sistem paketi olarak bulabilir ve aşağıdaki gibi apt-get ile kurabilirler:
$ sudo apt-get install python3-venv
Yeni bir sanal ortam oluşturmak kolaydır. Komut satırından, new_venv dizini içinde yeni bir sanal ortam oluşturmak için aşağıdaki komutu yazın.
$ python -m venv new_venv
Öneri olarak, yukarıdaki komutu çalışma alanı (workspace) dizininden yazmayı deneyin. Böylece kaynak kodunuzun ve uygulamanızın ihtiyaç duyduğu kütüphanelerin saklanacağı sanal ortamın bulunduğu, kendi içinde yeterli bir dizine sahip olursunuz. Sanal ortam oluşturulduktan sonra, new_venv/bin/activate içindeki activate betiğini yükleyerek izole modda çalışmaya başlayabilirsiniz.
source new_venv/bin/activate
(new_venv) $ ...
Windows kullanıcıları, Scripts dizini içindeki activate betiğini çalıştırmalıdır.
new_venv/Scripts/activate
(new_venv) $ ...
Sanal ortam yüklendikten sonra kabuk isteminin, parantez içinde sanal ortam adını yazarak değişeceğini unutmayın. Kısaca, sanal ortam şunları içerir:
- Bir python yorumlayıcısı: Sanal ortamı oluşturmak için kullanılan yorumlayıcının aynısı. Python takma adını değiştirmedikçe, açıkça python3 veya birden fazla Python3 kuruluysa python3.6 kullanmanız gerekeceğini unutmayın.
- Pip paket yöneticisi. Paket yöneticisi tüm kütüphaneleri lib/pythonX.Y/site/packages dizini içine kurar. Python yorumlayıcısı bağımlılıkları çözmek için bu dizini kullanır.
- Aktifleştirme/Pasifleştirme betiği. Proje ortamını yüklemeye ve ihtiyaç kalmadığında varsayılan yapılandırmaya dönmeye yardımcı olur. Sanal ortam başarıyla yüklendikten sonra herhangi bir kütüphaneyi şu şekilde kurabilirsiniz:
$ pip install requests
Bu komut, requests kütüphanesini sanal ortam içine kurar ve sanal ortam dizininin bin klasöründe bulunan python yorumlayıcısı tarafından yüklenebilir hale getirir. Kütüphaneyi kurmak için ayrıcalıklı kullanıcı erişimi gerekmediğine dikkat edin. Kurulumu, ayrıntıları sağlayan pip show komutunu (pip show requests) kullanarak kontrol edebilirsiniz. Son olarak, bir projede çalışmayı bıraktığınızda, deactivate komutunu çalıştırarak sanal ortamı pasifleştirebilirsiniz.
(new_venv) $ deactivate
$
Hem basit, hem güçlü, hem de çok yardımcı. İşte sanal ortamlar bunun için var! :D
İPUCU: Paketlerin nereye kurulduğu sys.prefix değişkeni üzerinden kontrol edilebilir. Yüklü bir ortamda ve varsayılan yapılandırmada çalıştırmayı deneyin.
>>> import sys
>>> print(sys.prefix)
Proje İskeleti: Cookiecutter ile Çocuk Oyuncağı!

Siz ve çoğumuz Python uygulaması geliştirmeye basit bir betikle başladık (muhtemelen Merhaba Dünya). Benzer bir yaklaşımı, yukarıda açıklanan kavramlarla birleştirdiğimizde şu çalışma alanı yapısına ulaşırız:
- Çalışma alanımızı içeren bir dizin, onun içinde
- Bir sanal ortam dizini ve
- Merhaba Dünya uygulamanızı içeren basit bir betik.
Her ne kadar Python projeleri herhangi bir çalışma alanı yapısına sahip olmak zorunda olmasa da, kodunuzu ilişkili test seti ve tam bir geliştirme yaşam döngüsü boyunca size yardımcı olacak diğer betikler veya yapılandırma dosyalarıyla birlikte yapılandırmanız önerilir. En yalın haliyle bir Python çalışma alanı aşağıdaki gibi olabilir:
$ tree -L 1
.
├── requirements.txt ---> Proje bağımlılıkları dosyası
├── src ---> Kaynak kod burada
├── tests ---> Test kodları burada
└── venv ---> Sanal ortam dosyaları
requirements.txt dosyasından pip bölümünde bahsetmiştik. Bu dosya, pip freeze komutu kullanılarak saklanabilen proje bağımlılıklarını içerecektir. src ve test dizinleri iş mantığını ve ilişkili testleri barındırır. venv dizini (genellikle bu adla anılır) ise sanal ortam yapılandırmasını saklar.
Proje İskeletini Kolay Yoldan Oluşturmak: Cookiecutter
Yukarıda sunulan yaklaşım yeterli olsa da, geliştirme becerileriniz ilerledikçe, geliştirme sürecinizi kolaylaştıran daha fazla aracı içeren bir iskelet üzerinde çalışmak isteyebilirsiniz. Python iskeletlerini elle oluşturmak zahmetli olabilir. Daha iyi bir seçenek, başvuru niteliğinde bir projenin kopyasını tutmak ve yeni bir proje kurarken kopyaladıktan sonra bazı içeriklerini değiştirmektir. Bu yaklaşım işe yarayabilse de hataya açıktır ve bazı kaynakları doğru şekilde ayarlamayı unutursanız tutarsız durumlara yol açabilir. Yeni projeler, cookiecutter aracı kullanılarak kolayca kurulabilir. Bu araç, girdi olarak bir proje şablonu alır ve dosya adları ile içeriklerini kullanıcıya sorulan bir dizi girdi parametresiyle değiştirip şablonun bir kopyasını oluşturur. Araç Python diliyle uygulanmıştır ve bir pip kütüphanesi olarak kurulabilir.
$ pip install -U cookiecutter
Unutmayın, -U seçeneği aracı kullanıcı alanınıza kuracaktır. Bunu atlayabilirsiniz; ancak bu durumda root (veya sudo yetkili) olarak kurmanız gerekir. Bu araç, Ubuntu kullanıcıları için apt-get ile kurulabilen bir paket olarak da bulunur
$ sudo apt-get install cookiecutter
En basit kullanımında cookiecutter aracı şu şekilde çağrılabilir:
$ cookiecutter <TEMPLATE_LOCATION>
Girdi şablonlarının konumu yerelde saklanabilir veya bir GIT URL’si olarak belirtilebilir. İkinci seçenek, proje çalışma alanı şablonlarını sürdürmek ve geliştirmek isteyen geliştiriciler ve kuruluşlar için uygundur.
Cookiecutter’ın nasıl çalıştığını anlamak için bir örnek cookiecutter projesine göz atın. Bu ve diğer tüm cookiecutter projelerinin çekirdek dosyası cookiecutter.json adını taşır ve proje çalışma alanını oluşturmak için kullanıcının belirtmesi gereken değerler kümesini içerir. Bu dosya JSON biçiminde yazılmıştır ve anahtar-değer çiftlerinden oluşan bir sözlük içerir; değerler, kullanıcının herhangi bir girdiyi atlaması halinde varsayılanları temsil eder.
{
"full_name": "Steven Loria",
"email": "sloria1@gmail.com",
"github_username": "sloria",
"project_name": "My Flask App",
"app_name": "myflaskapp",
"project_short_description": "A flasky app.",
"use_pipenv": ["no", "yes"]
}
Girdi değerlerinden hareketle cookiecutter, şablonda çift süslü parantez {{...}} içeren dosya ve dizin adlarını değiştirir.
Kendi arketiplerini oluşturmakla ilgilenenler için, bir cookiecutter projesi üzerinde çalışmaya başlamak ve uygulama geliştirmek için değerli gördüğünüz her şeyi içine koymak harika bir fikirdir. Yeni bir projeye başlamak için sabırsızlananlar içinse, kullanılmaya hazır pek çok cookiecutter projesi mevcuttur. İhtiyaçlarınıza uygun bir cookiecutter mı arıyorsunuz? Bu cookiecutter arama motorunu kullanarak aramayı deneyin! Daha güzel haber, bu araç yalnızca Python proje iskeletlerine yönelik değildir; diğer tüm proje türleri için de geneldir!
Hepsini Bir Araya Getirmek: Bir Proje Geliştirme Yaşam Döngüsü
Paket yönetimi, sanal ortam ve proje iskeleti kavramlarını tanıttıktan sonra, hepsini bir araya getirip bu eğitimi izledikten sonra bilgisayarınızı ayarlayarak nasıl çalışabileceğinizi açıklayabiliriz:
- Yazım yorumlayıcısı olarak Python3 kullanın. Hatta Python 3.6 kullanmaya başlarsanız daha da iyi.
- Python modüllerinizin ve bağımlılıklarınızın saklanacağı yeni bir proje oluşturun.
- Seçtiğiniz bir başvuru şablonuyla birlikte cookiecutter kullanarak yeni bir projeyi kolayca oluşturun.
- Uygulama klasörü içinde yeni bir sanal ortam oluşturun ve uygulamanızı kodlamaya hazır olduğunuzda etkinleştirin.
- Hayatınızın en iyi uygulamasını yazın ve ihtiyaç duyarsanız üçüncü taraf kütüphanelerden yararlanın.
- requirements.txt dosyasında bağımlılıkları
pip freezekomutunu kullanarak belirtmeyi unutmayın.
- requirements.txt dosyasında bağımlılıkları
- [İsteğe bağlı] Projenizi Git gibi bir Sürüm Kontrol Sistemi’ne yükleyin. Ancak sanal ortam içeriğini yüklemeyin. Aşağıda açıklandığı gibi istediğiniz zaman yeniden oluşturabilirsiniz.
Kod ve bağımlılık dosyası saklandıktan sonra, proje yapısını aşağıdaki şekilde kolayca yeniden oluşturabilirsiniz:
- Kodu ve bağımlılık dosyasını bir çalışma alanı klasörüne kopyalayın (Git kullanıcıları depoyu klonlayabilir).
- Uygulama klasörü içinde yeni bir sanal ortam oluşturun ve uygulama bağımlılıklarını kurmak için etkinleştirin.
- Bağımlılıkları
pip install -r requirements.txtkullanarak kurun. - Projeleriniz üzerinde iyileştirmeler veya düzeltmeler yapın. Yeni bağımlılıkları
pip freezekullanarak requirements dosyasında belirtmeyi unutmayın.
Bu eğitimi tamamlamadan önce son bir şey. Python diliyle kodlama için mevcut IDE’lerden hiç bahsetmemiş olsak da, dilediğinizi seçmekte ve ihtiyaçlarınıza uyacak şekilde özelleştirmekte özgürsünüz.
Keyifli Python kodlamaları!
Python hakkında daha fazla bilgi edinmek isterseniz, DataCamp’in ücretsiz Veri Bilimi için Python’a Giriş kursuna göz atın.
