Python geliştirirken en çok kullandığım araçlar
Merhabalar, daha önce gelen talepler üstüne bu yazımı kaleme alıyorum. İşim gereği python’da backend de geliştirmem gerekiyor ve veri bilimi çıkışlı biri olarak zorlandığım durumlar olsa da hayatımı kolaylaştıran araçlardan bahsedeceğim. Öncelikle sevdiğim python kütüphanelerinden, sonra environment tercihimden ardından da IDE ve text editörü seçimlerimden bahsedeceğim.
Kütüphaneler
Flask
Flask kütüphaneden ziyade bir Python’la backend geliştirme platformu denebilir. Django’dan daha esnek bulduğum için Flask kullanıyorum. Öğrenirken de Miguel Grinberg’ün “Flask Web Development: Developing Web Applications with Python” kitabını baştan sona okuyup uygulamaya çalışarak öğrendim. Eğer backend hakkında hiçbir fikriniz yoksa bu kitap size baştan güvenlik, logging, database’ler, istekler ve daha fazlası hakkında gereken temel bilgiyi de sağlıyor. Bunların hiçbirinden bu yazıda bahsetmiyorum, bu yazı daha çok yardımcı araçları içeriyor.
Postman (ve Responses)
Postman geliştirdiğiniz API’ya istekler göndermenizi kolaylaştıran bir araç. Postman’dan önce kendi yazdığım unit test’leri otomatize etmeye çalışarak her güncellemeden önce test yapıyordum, bu arada bunun için ayrı bir kütüphane kullanıyordum, adı da responses. Responses kütüphanesiyle basit şekilde test yazıyorsunuz, içinde requests’le isteğinizi gönderip çıktısını istediğiniz cevabı döndürüyor mu diye assert ettiriyorsunuz, linki koyduğum dokümentasyonda güzel örnekler var. Oturup buna vakit harcamak yerine isteklerimi Postman’in altında bir koleksiyon olarak tutmaya karar verdim, bu işimi fazlasıyla kolaylaştırdı.
Pdb
Pdb (python debugger) işimi en çok kolaylaştıran araç olabilir. Hata fırlattığınız kodun bir üst satırına import pdb;pdb.set_trace() yazıp kodunuzu terminal’de çalıştırarak pdb’nin bulunduğu yere kadar çalıştırıp, pdb’nin bulunduğu yerde kodunuzu durdurup değişkenlerin o anda aldığı değerlere, istek atılıyorsa cevabına, o an olan herhangi bir şeye bakabiliyorsunuz, ardından kodunuzu n diyerek satır satır çalıştırarak devam ediyorsunuz.
Black
Black’i huggingface’in açık kaynak datasets (kütüphane) etkinliğinde keşfettim. Black’te sadece bir satır komutla kodunuzu formatlıyor, bu da CI/CD için (özellikle açık kaynak projelerde) çok kullanışlı bir şey. Kendi projenize katkı sağlayacak kişiler için kullanabilirsiniz. Her commit’ten önce çalışması için otomatikleştirebiliyorsunuz bu arada.
flake8
flake8'in black’ten farklı sizin hatalarınızı (kodunuzun davranışından ziyade format, kullanılmayan kütüphane ve değişkenler) göstermesi. Daha önce pycodestyle ve pyflakes’i ayrı ayrı kullanmış olanlar için daha kullanışlı çünkü bu ikisinin üstüne yazılmış bir kütüphane.
Ngrok
Ngrok herhangi bir uygulamayı kendi bilgisayarınızda host ederken başka insanların da buna erişebilmesini sağlayan bir servis. Bunu genelde chatbot için yaptığımız veri etiketlerini cloud’da çalıştırmaya ve insanlara erişim vermeye üşendiğimde kullanıyorum, müşterilerinize demo yapmak için de kullanabilirsiniz, böylece insanlara zorla ssh açtırmanız ve teknik detaylarıyla uğraşmanız gerekmez.
Gazpacho
Gazpacho’yu calmcode’dan öğrenmiştim. Bu kütüphanenin iyi tarafı kendisine ait dependency’lerinin olmaması. Basit şekilde veri kazıma (scraping) için kullanıyorum.
Pyenv
Sanallaştırma projenizin dependency’lerini ve python versiyonlarını kolay yönetmenizi ve başka insanların da projenizi sorunsuz çalıştırmasını sağlar. Bilmeyenler için sanallaştırma eğitim serisini altı çizili şekilde link’e koydum. Ben sanallaştırma için pyenv kullanıyorum. Farklı sanal ortamlar için bir cheatsheet oluşturdum, içinde komutlar da mevcut. Bir proje için python 3.7.6 kullanıyordum ve conda’da bunun gibi bazı ara versiyonların yüklenmediğini farkettiğim için pyenv kullanmaya başladım.
Yazıya zamanla ekleme yapacağım.
Bütün bu araçların ve kütüphanelerin ve daha fazlasının rehberlerinin host edildiği calmcode.io’ya ve geliştiricisi Vincent’a teşekkür ederim.