Python Programlama Dili
Bir belgelendirme projesi...

PyGI ve Windows (Eski PyGTK)

6 Kasım 2014

Python'ın 3.x sürümlerinde grafik arayüz programlama çalışmaları yapabilmek için birkaç farklı seçeneğimiz var. Bu seçeneklerin başlıcaları şöyle listelenebilir:

  1. Tkinter
  2. PyQT
  3. PyGTK
  4. WxPython

Etraftan gördüğüm kadarıyla bunlar içinde en popüleri PyQT gibi duruyor. Onun ardından da herhalde PyGTK geliyordur...

Geçmişe baktığımızda, yukarıdaki kütüphaneler arasında Python 3'ü ilk destekleyen GUI takımının (doğal olarak) Tkinter olduğunu görüyoruz. Kısa bir süre sonra da Tkinter'i PyQT takip etmiş.

WxPython için de, bu grafik arayüz takımını Python 3'e uyumlu hale getirmek amacıyla 'Project Phoenix' adlı bir proje yürütülüyor. Doğrusunu söylemek gerekirse, ben WxPython'ı pek takip etmediğim için bu projenin güncel durumunu bilmiyorum. Ama http://wxpython.org/Phoenix/snapshot-builds/ adresinde birtakım güncel görünen paketlerin olduğunu da görüyorum...

PyGTK cephesinde ise durum biraz daha farklı bir gelişme gösterdi. Python 2'nin piyasadan çekilmesi ile birlikte PyGTK da artık ölüme terkedildi. Artık PyGTK yerine, PyGI (Python GObjectIntrospection) adlı bir grafik arayüz kütüphanesi ile çalışmalarımızı yürütüyoruz.

Esasında PyGI de kısa bir süre içinde Python 3 ile çalışabilecek hale gelmişti. Ama yakın zamana kadar bu kütüphanenin Windows üzerinde kullanılamaması, yalnızca GNU/Linux paketlerinin bulunuyor olması, birden fazla platform üzerinde çalışabilecek uygulamalar yazmak isteyen geliştiricileri PyGI'den uzak tutuyordu.

Dediğim gibi, epeydir PyGI'yi GNU/Linux dağıtımlarında kullanabiliyorduk, ama yakın zamana kadar PyGI'nin Windows için doğru dürüst çalışan bir sürümü bulunmuyordu.

Ama bir süre önce Windows için de kurulum paketlerinin yayımlanması ile birlikte PyGI kullanarak hem GNU/Linux'ta hem de Windows'ta arayüz tasarlamak mümkün hale geldi.

PyGI'nin Windows üzerinde çalışan güncel kurulum betiklerini http://sourceforge.net/projects/pygobjectwin32/files/?source=navbar adresinden indirebilirsiniz.

İndirdiğiniz kurulum betiğini ilk çalıştırdığınızda karşınıza şöyle bir ekran gelecek:

http://media.istihza.com/images/pygi/01.PNG

Bu ekranda, PyGI'nin çalışması için gereken asgari sistem gerekliliklerini göreceksiniz. Buna göre PyGI'yi sistemimize kurabilmek için en az şu sistem yapılandırmasına sahip olmamız gerekiyormuş:

  1. 1.5 GB disk alanı
  2. 32 veya 64 bit işlemci
  3. XP veya üstü Windows sürümleri

Burada OK düğmesine basıp yolumuza devam ediyoruz.

İkinci adımda şu ekran karşımıza çıkıyor:

http://media.istihza.com/images/pygi/02.PNG

Sıkıştırılmış paketin açılmasının ardından da şu ekranla karşılaşıyoruz:

http://media.istihza.com/images/pygi/03.PNG

Eğer sisteminizdeki Python bir taşınabilir sürücü üzerindeyse bu ekranda 'Add Path' düğmesine basarak, Python'ın kurulu olduğu yeri PyGI'ye gösterebilirsiniz. Eğer Python kurulumunuz C diski üzerinde bir yerlerde ise 'No' düğmesine basarak bir sonraki adıma geçin.

Not

Çoğu kişi için doğru seçenek 'No' olacaktır.

Bir sonraki adımda ise şöyle bir ekranla karşılaşıyoruz:

http://media.istihza.com/images/pygi/04.PNG

PyGI, sistemimizde kurulu olan Python'ı bulamadığını söylüyor. Kurulum programının sistemimizdeki Python'ı otomatik olarak arayıp tespit etmesi için 'Yes' düğmesine basıyoruz.

Daha sonra karşımıza şöyle bir ekran geliyor:

http://media.istihza.com/images/pygi/05.PNG

Burada sisteminizde kurulu olan bütün Python sürümlerini görebilirsiniz. Bu ekranda bazı sürümleri birden fazla görürseniz bunu önemsemeyin. Ben bu ekranda, PyGI'yi Python 3.4 ile birlikte kullanmayı planladığım için '3.4'lü girdiyi seçtim.

Seçimimizi yaptıktan sonra şu ekranla karşılaşıyoruz:

http://media.istihza.com/images/pygi/06.PNG

Bu ekranda, kurmak istediğimiz GNOME paketlerini seçiyoruz. Burada, öntanımlı olarak seçili durumdaki 'base' paketlere ilave olarak, ekranda gösterdiğim GTK paketini de seçmelisiniz. İsterseniz başka paketler de seçebilirsiniz, ama bu ikisinin mutlaka seçili olması gerekiyor...

Sonraki adımda şu ekranla karşılaşıyoruz:

http://media.istihza.com/images/pygi/07.PNG

Burada da bizden GNOME dışı paketler arasından seçim yapmamız isteniyor. Eğer özellikle kurmak istediğiniz bir paket yoksa 'Next'e basıp ilerleyebilirsiniz.

Bir sonraki adımda ise, yine bir paket seçim ekranı var:

http://media.istihza.com/images/pygi/08.PNG

Burada da, eğer kurmak istediğiniz özel bir paket yoksa 'Next' ile devam edebilirsiniz.

Bir sonraki ekranda PyGI size şöyle bir teklifte bulunuyor:

http://media.istihza.com/images/pygi/09.PNG

PyGI bu ekranda 3.14 sürümü yerine 3.8.9 sürümünü kurmak isteyip istemediğimizi soruyor. Burada verilen bilgiye göre 3.14 sürümü 3.8 sürümüne göre daha fazla özelliğe sahip ve daha şık bir sürümmüş, ama 3.14 sürümünde win32 tema desteği yokmuş! O yüzden 3.8'e dönmek ister miymişiz? Ben geri dönmek istemedim. O yüzden 'No' düğmesine basarak yoluma devam ettim...

Artık kuruluma hazırız:

http://media.istihza.com/images/pygi/10.PNG

'Yes' diyerek devam ediyoruz:

http://media.istihza.com/images/pygi/11.PNG

Birkaç saniye içinde de kurulumumuz tamamlanıyor:

http://media.istihza.com/images/pygi/12.PNG

Artık Windows üzerinde PyGI çalışmalarınıza başlayabilirsiniz. Yalnız, PyGI Windows üzerinde henüz çok yeni sayılır. O yüzden GNU/Linux'taki kadar kararlı olmayabilir. Bu da aklınızda bulunsun.

Her Yönüyle Python (2. Baskı)

20 Ağustos 2014

Hatırlarsanız ilk olarak 2010 yılında KODLAB Yayınları'ndan "Herkes için Python" adlı bir kitap çıkarmıştım. Python programlama dilinin 2.6 sürümünü anlattığım bu kitap toplam iki baskı yaptı. Geçen yıl ikinci baskının ardından, KODLAB Yayınları'nın tavsiyesi ve Python programlama dilinin 2.7 sürümünün de çıkmasının etkisiyle kitabı yenilemeye karar verdik. Böylece ortaya "Her Yönüyle Python" adlı bir kitap çıktı.

http://media.istihza.com/images/kitap.png

Bu kitap 2013 yılının Temmuz ayında yayımlanmıştı. Aradan geçen bir yıl içinde bu kitabın da ilk baskısı tükendi ve Ağustos 2014 itibariyle bu kitap ikinci baskısını yaptı.

Dediğim gibi, 'Herkes için Python' adlı kitapta 2.6 sürümünü ele almıştım. 'Her Yönüyle Python'da ise 2.7 sürümünü anlattım.

Python 2.7 sürümünün en önemli özelliklerinden biri, Python'ın 3.x öncesi son sürümü olmasıdır. Python'ın 3.x sürümleri, 2.x sürümlerine göre oldukça radikal değişiklikler içeriyor. İşte 2.7 sürümü, bir bakıma 3.x sürümleri için bir ön hazırlık niteliği taşıyor. Dolayısıyla eski kitapta yalnızca 2.x sürümlerinden söz ederken, yeni kitapta 2.x ile 3.x sürümleri arasındaki geçişe de vurgu yaptım.

Bunun dışında, daha anlaşılır bir metin ortaya çıkarmak için yeni kitapta bazı konuları baştan yazdım. Örneğin yeniden yazdığım 'Dosya İşlemleri' konusu eskiye göre çok daha anlaşılır ve okunaklı bir hale geldi. Bunun haricinde pek çok konuyu tekrar okuyup, bulabildiğim aksaklıkları ve anlatım bozukluklarını gidermeye çalıştım. Ayrıca bazı bölümlere yeni konular da ilave ettim. Örneğin eski kitapta "Sıralı Sözlükler" konusundan hiç bahsetmemiştim. Yeni kitapta bu konuyu "Listeler, Demetler ve Sözlükler" başlığının altına ekledim...

Eklemelerin dışında, bu kitapta çıkarılan bazı bölümler de var. Örneğin pyPDF modülü artık geliştirilmediği için bu modülü anlatan kısmı kitaptan çıkardım.

PyPDF dışında ayrıca kitaptan OpenOfficeOrg (Ooo) ile ilgili olan bölümü de çıkardım. Ben eski kitabı ilk yazdığım sıralarda OpenOfficeOrg adlı ofis programı Sun firması tarafından geliştiriliyordu. Dolayısıyla kitapta anlattığım konu Ooo'nun Sun firması tarafından geliştirilen sürümünü belgelendiriyordu. Ancak bu program birkaç kez el değiştirdi. Bir ara Oracle tarafından alınan Ooo, şu anda Apache Yazılım Vakfı tarafından geliştiriliyor. Ayrıca Ooo'ya alternatif olarak (aynı kod tabanı üzerinde) bir de LibreOffice adlı bir yazılım geliştirilmeye başlandı. Programdaki bu değişikliklerden ötürü, kitaptaki bilgiler güncelliğini yitirdiği için, OpenOfficeOrg ile ilgili bölümü kaldırdım.

Kitaptaki önemli değişikliklerden biri de kitabın kapağı... Eski kitabın kapağında gerçek bir yılan resmi vardı. Aradan geçen zamanda bu resim ile ilgili pek çok şikayet aldım. Gerçek yılan resmine bakamayan, görünce tiksinen, ürperen, gözünü kaçıran epey kişi varmış. Yeni kitapta ise yılanımız bir çizimden ibaret. Bu sayede hassas okurlarımız kitabı artık gönül rahatlığıyla ellerine alıp inceleyebiliyorlar...

Ağustos 2014 tarihli ikinci baskıda ise, ilk baskıda gözümden kaçan yazım ve kod hatalarını düzeltmeye çalıştım.

Elbette, daha önce de olduğu gibi, kitabın içindeki bilgilere (ve hatta daha fazlasına) istihza.com üzerinden ücretsiz olarak da erişebilmeye devam edeceksiniz. Bu kitabı çıkarmamızın amacı kitaptan okumayı sevenlerin isteğine yanıt verebilmek. Eğer kitabı satın alırsanız istihza.com'u maddi olarak desteklemiş olursunuz, ancak tabii ki böyle bir zorunluluk asla söz konusu değil. Kitabı satın almak istemiyor olabilirsiniz, maddi gücünüz kitabı almaya yetmiyor olabilir ya da bambaşka sebepleriniz olabilir. Hiçbirine itirazım yok. Bu durumda istihza.com'daki bilgileri site üzerinden veya PDF (ya da EPUB) biçiminde indirerek ücretsiz olarak takip etmeye devam edebilir, hatta eğer isterseniz burada gördüğünüz belgelerin çıktısını alabilir, tanıdık-tanımadık herkesle gönül rahatlığıyla paylaşabilirsiniz. Her zaman söylediğim gibi, istihza.com projesinin amacı bilgiye erişimi olabildiğince kolaylaştırmaktır. Bu sebeple, en başından beri bu projeyi kısıtlayıcı bir lisans altında değil, Creative Commons gibi özgür bir lisans altında yayımlıyorum.

İmkan olursa bundan daha güzel projelerle karşınıza çıkabilmeyi ümit eder, hepinize iyi çalışmalar dilerim.

EPUB Belgeleri

24 Nisan 2013

istihza.com'u takip edenlerin bildiği gibi, site üzerindeki HTML belgeleri, PDF ve EPUB biçimlerinde de indirilebiliyor.

Nisan ayının başında Anıl Özbek (Maidis), sitedeki EPUB belgelerinin biçim ve içeriğine ilişkin şu tespit ve önerilerde bulunmuştu:

  1. Belli aralıklarda sayfaların üstünde "ana sayfa belgeler çeviriler eskiler depo günlük forum wiki hakkında" gibi yazılar bulunuyor.
  2. Belli aralıklarda sayfaların alt kısmında "Copyright 2007-2013, Fırat Özgül. Son güncelleme: 01/04/2013. Sphinx 1.1.3 ile oluşturulmuştur. Barındırma Sponsoru: sizhost" ifadeleri bulunuyor. Sanırım dönüşüm işlemi kaynak kodlar yerine html üzerinde gerçekleşmiş ve her bölüm başında ve sonunda böyle bir durum oluşmuş.
  3. EPUB dosyasında bir kitap kapağı tanımlanmamış. Bir kapak kitabın dosya yöneticilerinde, e-kitap okuyucu aygıtlarında ve e-kitap yönetim uygulamalarında güzel görünmesini sağlayacaktır.
  4. Kitap ismi/başlığı olarak Python seçilmiş. "Python Kılavuzu Sürüm 3.x" veya "Python 3 Kılavuzu" daha iyi olabilirdi sanki. Örneğin kitabınızın 2.x sürümü için olanını da bulunduran benim gibiler için. Önceki kitabın lafı açılmışken onun için de bir EPUB sürümü güzel olurdu.
  5. Henüz e-kitap okuyucu cihazıma atmadığım için ondaki durumu görmedim ama uzun kod satırları Calibre'nin öntanımlı görüntüleyicisinde sorunlu gibi, kodların tamamını görüntülemek için kaydırma gerekiyor. EPUB: http://i.imgur.com/svCtZKG.png ve kindlegen ile oluşturulmuş MOBI: http://i.imgur.com/BO8wBvk.png bu kod parçalarının da normal metin gibi belirli uzunluktan sonra (yeni bir satır sanılmayacak şekilde) alt satırda görüntülenmesi güzel olurdu imkanı varsa.
  6. Belki metin iki yana yaslı olabilir ama bu tamamen benim kişisel tercihim, önemli bir şey değil.
  7. Bazı bağlantılarda hem bağlantı metni hem de bağlantı adresi görünüyor: http://i.imgur.com/Lmpt6qo.png

Anıl Özbek'in yukarıdaki önerilerini dikkate alarak şu değişiklikleri yaptım:

  1. Sayfaların üst kısmındaki bağlantıları EPUB belgelerinden kaldırdım. Bunlar artık sadece HTML belgelerinde olacak.
  2. Sayfaların alt kısmındaki telif/güncelleme/sponsor bilgilerini EPUB belgelerinden kaldırdım. Bunlar da sadece HTML belgelerinde olacak.
  3. Henüz EPUB için bir kitap kapağı tasarlayamadım. Ama vaktim olduğunda bunu da yapmaya çalışacağım.
  4. Kitap ismi/başlığı olarak 'Python' seçilmişti. Bunu 'Python3 için Türkçe Kılavuz' olarak değiştirdim.
  5. Kitabın 2.x sürümü için henüz EPUB oluşturmadım. Bunu da vaktim olduğunda ayarlayacağım.
  6. Uzun kod satırları artık belirli uzunluktan sonra alt satıra geçiyor. Yalnız bu özelliğin düzgün çalışıp çalışmadığının farklı tarayıcı ve okuyucularda test edilmesi gerekiyor. Bu konuda sizlerden geri dönüş bekliyorum.
  7. Metinleri özellikle iki yana yaslı olarak ayarlamadım. Çünkü okunaklılık üzerine yapılan çalışmalar sola yaslı metinlerin daha kolay anlaşıldığını ve daha hızlı okunduğunu gösteriyor. (Konu hakkında kısa bir özet için şu adresi inceleyebilirsiniz.)
  8. Bazı bağlantılarda hem bağlantı metni hem de bağlantı adresi görünüyordu. Bağlantı adreslerini kaldırdım.

Önerileri için Anıl Özbek'e teşekkür ederim. Sitedeki belgelerle ilgili önerileri olan başkaları da varsa onları da tartışabiliriz.

Sponsor Değişikliği

19 Nisan 2013

Bildiğiniz gibi istihza.com projesi sponsor desteğiyle barındırılan bir site. 13 Ocak 2009 tarihinden 24 Eylül 2010 tarihine kadar Semih Masat'ın sponsorluğunda barındırılan istihza.com, o tarihten bugüne kadar da sırasıyla Ozan Uzer ve Sinan Postacı tarafından barındırıldı.

Semih Masat, Ozan Uzer ve Sinan Postacı sayesinde istihza.com bugüne kadar ayakta kalabildi. Kendilerinden bugüne kadar son derece kaliteli bir sponsorluk hizmeti aldım. Onlara ne kadar teşekkür etsem azdır.

Bugün, yani 19 Nisan 2013 tarihi itibariyle ise yeni bir sponsorumuz var. Bugünden itibaren istihza.com projesi, alastyr.com sponsorluğunda barındırılacak.

Bir özgür belgelendirme projesi olan istihza.com'a değer verip projenin ayakta kalmaya devam etmesini sağladığı için Mehmet Bey'e teşekkür ederim.

Python 2.7.4

11 Nisan 2013

Geçenlerde Python'ın 2.7.4 ve 3.3.1 sürümleri yayımlandı. Ben de deneme amaçlı olarak, sponsorumuzun (sizhost.com) istihza.com için tahsis ettiği VPS üzerinde Python'ı 2.7.4 sürümüne güncelledim. Ancak güncellemenin hemen ardından istihza.com çevrimdışı oldu.

Hata günlüklerinde şöyle bir ibareye rastladım:

Traceback (most recent call last):
  File "/usr/lib/python2.7/site.py", line 563, in <module>
    main()
  File "/usr/lib/python2.7/site.py", line 545, in main
    known_paths = addusersitepackages(known_paths)
  File "/usr/lib/python2.7/site.py", line 272, in addusersitepackages
    user_site = getusersitepackages()
  File "/usr/lib/python2.7/site.py", line 247, in getusersitepackages
    user_base = getuserbase() # this will also set USER_BASE
  File "/usr/lib/python2.7/site.py", line 237, in getuserbase
    USER_BASE = get_config_var('userbase')
  File "/usr/lib/python2.7/sysconfig.py", line 578, in get_config_var
    return get_config_vars().get(name)
  File "/usr/lib/python2.7/sysconfig.py", line 505, in get_config_vars
    import re
  File "/usr/lib/python2.7/re.py", line 105, in <module>
    import sre_compile
  File "/usr/lib/python2.7/sre_compile.py", line 14, in <module>
    import sre_parse
  File "/usr/lib/python2.7/sre_parse.py", line 17, in <module>
    from sre_constants import *
  File "/usr/lib/python2.7/sre_constants.py", line 18, in <module>
    from _sre import MAXREPEAT
ImportError: cannot import name MAXREPEAT

https://bugs.launchpad.net/ubuntu/+source/ubuntu-release-upgrader/+bug/1165281 adresindeki bilgiye göre bu hatanın bir çözümü var. Ancak ben hatayı düzeltmeye çalışmak yerine Python 2.7.3'ü tekrar derleyip eski sürüme geri dönmeyi tercih ettim.

Bu arada, Python 2.7.3'e geri dönerken temiz bir derleme yapmak gerektiğini, eski inşa dosyalarını silmek gerektiğini hatırlatayım.

Peki sizden bu hatayla karşılaşan oldu mu? Eğer olduysa siz ne yaptınız?

Yenilikler

20 Mart 2013

istihza.com üzerindeki Python3 belgelerini vakit buldukça güncellemeye devam ediyorum. Bildiğiniz gibi bu belgeleri çevrimiçi HTML dosyalarından veya bilgisayarınıza indirebileceğiniz PDF dosyasından okuyabiliyorsunuz. Bugünden itibaren dilerseniz bu belgeleri bilgisayarınıza EPUB biçiminde de indirebilirsiniz.

http://media.istihza.com/images/ekip.jpg

istihza.com ekibi yorgun ama gururlu...

EPUB biçimli dosyaları EPUBReader benzeri Firefox eklentileri yardımıyla doğrudan tarayıcı üzerinden veya Calibre gibi yazılımlarla yerel olarak bilgisayarınızdan okuyabilirsiniz. Calibre adlı yazılımın Windows ve GNU/Linux sürümlerini http://calibre-ebook.com/download adresinden indirebilirsiniz. Ayrıca bu yazılım, kullandığınız dağıtımın depolarında da bulunuyor olabilir. Örneğin Ubuntu'da şu komutla bu yazılımı kurabilirsiniz:

sudo apt-get install calibre

İndirilebilir biçimler arasına EPUB'ın da eklenmesinin dışında sitede bir yenilik daha var. O da siteye herhangi bir şekilde katkıda bulunanların bir tablo halinde listelenmesi... Artık Python3 belgelerine kimlerin ne şekilde katkıda bulunduğunu Katkıda Bulunanlar adlı sayfadan takip edebilirsiniz.

Bu arada, http://www.istihza.com/forum/viewtopic.php?f=40&t=1301 adresinde bahsettiğim konuda yardım beklemeye devam ediyorum. Python3 belgelerini takip edenler bununla ilgilenirse çok memnun olurum.

Yeni istihza.com

3 Kasım 2012

istihza.com'daki belgeleri takip edenlere daha kullanışlı bir arayüz sunabilmek için bir taslak çalışması yapıyorum. Amacım istihza.com'daki belgelerin daha kolay bir şekilde izlenebilmesini sağlamak. Bunun için docs.python.org adresindeki resmi belgelerden de ilham alıyorum.

Ayrıca belgeleri de artık başlıbaşına bir alt alan adı haline getiriyorum. Yakında belgeler, kendilerine ait bir alt alan adına taşınacak.

Çalışma taslağını http://belgeler.istihza.com/py3/ adresinde inceleyebilirsiniz.

Bu arada, elbette tasarıma ilişkin yorumlarınızı almaktan da memnuniyet duyarım.

Not

Siteyi tasarlarken görünüm testlerini Firefox, Chrome, Chromium, Yandex Tarayıcısı ve Opera'nın son sürümleri ile Internet Explorer'ın 8.0 sürümü üzerinde yaptım. Siteyi IE8'den düşük bir sürümle görüntülemeye çalışanlar (şimdilik) http://www.istihza.com/ie/ adresine yönlendiriliyor.

Not

Site kodlarının standartlara uygun olmasına özen gösteriyorum.

Python3.3 Derlemesinde bir Hata

21 Ekim 2012

Geçen gün bir bilgisayarda Python'ın 3.3 sürümünü derlerken make komutu şu hatayı verip derleme işlemini sona erdirdi:

Undefined reference to `_PyFaulthandler_Init'

Bu durum Python3.3 ile birlikte standart modüller arasına eklenen faulthandler adlı bir modülden kaynaklanıyor.

Eğer siz de derleme esnasında buna benzer bir hata alırsanız, configure betiğinin bulunduğu dizin altında şu komutu verin:

cp Modules/Setup.dist Modules/Setup

Bu işlemin ardından tekrar make komutunu verip yolunuza devam edebilirsiniz.

Not

Python3.3 ile birlikte gelen faulthandler modülü hakkında bilgi edinmek için http://docs.python.org/dev/library/faulthandler.html adresini ziyaret edebilirsiniz.