Python Paketlerinin Pip ve PyPI Üzerinde Yayınlanması

0 262

Kütüphane çeşitliliği python programlama dilini günümüzde bu kadar popüler yapan tetikleyicidir. Bu aynı zamanda açık kaynak kültürünü de benimsemeyi teşvik eden bir etkendir. Bu notkada PyPI (Python Package Index) conda gibi alternatifleri olsa da standart haline gelmiştir. Komut satırında pip install komutundan sonra indirmek istediğiniz paketin ismini yazmanız kurulumu gerçekleştirmeniz için yeterlidir. Kurulumun kolaylığı ile tezat bir şekilde ilk kez paket yayınlayacaklar için süreç biraz problematik. Son dönemlerde bir kaç açık kaynak kodlu projemi PyPI üzerinde yayınlama imkanı buldum. Yine bu blogta detaylarını paylaştığım deepface kütüphanesini hangi adımlar ile yayınladığıma bu yazıda değineceğim.

pip

Kurulum rehberi

Öncelikle ana dizinde bir setup.py dosyası oluşturmanız gerekmekte.

Pip paket ismini ilk almak isteyene rezerve ettiği için name argumanında gönderilecek isim tekil olmak zorunda. Aşağıdaki örnekte isim olarak deepface belirlenmiş. Pip üzerinden bu paket pip install deepface şeklinde indirilecek.

GitHub repo’larından aşina olduğumuz README.md dosyası paketin uzun açıklaması (long_description) olarak belirlenmiş.

Versiyon bilgisini (version) hep yapacağınız güncelleme için daha sonra arttırmalısınız. Çünkü yayınladığınız bir versiyonda bir hata fark ederseniz yayınlanmış o versiyonu silmenize izin olsa bile aynı versiyon ile bir daha bir şey yayınlayamıyorsunuz.

Bununla birlikte paketinizin bağımlı olduğu python dağılımı ve harici bağımlı kütüphaneleri de python_requires ve install_requires argumanlarında gönderebiliyorsunuz. Böylelikle pip install deepface komutu çalıştırıldığında ilk numpy 1.14’ün kurulumu gerçekleştiriliyor olacak.

Setup scriptinin olduğu dizinde paketinizin ismi ile aynı olan bir klasör yaratmalı ve tüm kaynak kodunuzu burada saklamalısınız. Birim testleriniz de aynı dizinde yer alabilirler.

Öncül konfigürasyonlar

Kaynak kodumuzun bulunduğu dizin ve tüm alt klasörlerde içi boş olsa da __init__.py dosyasını oluşturmamız gerekmekte.

deepface/__init__.py

deepface/basemodels/__init__.py

deepface/extendedmodels/__init__.py

deepface/commons/__init__.py

Klasör yapısı

Klasör yapısını baştan düzenlemeniz gerekecek. Örneğin deepface/DeepFace.py dosyasından deepface/basemodels/Facenet.py’i import etmek istiyoruz. Normal şartlarda aşağıdaki şekilde referans göstermemiz yetecekti.

Ancak artık basemodels klasörünün deepface altında olduğunu belirtmem gerekecek.

Yerel testler

Klasör yapınız düzenlendikten sonra artık kodunuz pypi’de yayınlanmaya hazır olacaktır. Ancak test etmeden paket yayınlamak çok mantıklı olmayacaktır. Setup scriptinin olduğu dizine gittikten sonra komut satırı çalıştırmanız gerekmekte.

Yerel kurulum tamamlandıktan sonra artık paketinizi import edebileceksiniz. deepface klasörü altındaki DeepFace.py arayüzünün sunduğu tüm fonksiyonlara artık erişebileceksiniz.

Yayınlamadan hemen önce

Yayınlama aşamasında pip üzerinden indirebileceğiniz 2 pakete ihtiyacımız olacak. Komut satırında aşağıdaki komutları çalıştırırsanız paketler hali hazırda kuruluysa güncelleyecek, değillerse de baştan indirecektir.

Aynı zamanda PyPI.org adresine kayıt olmanız gerekmektedir. Yayınlama aşamasında kullanıcı adı ve şifrenizi komut satırında girmeniz beklenecek.

Yayınlama

Setup scriptini aşağıdaki şekilde çağıracağız öncelikle.

Bu ana dizinde dist adında bir klasör yaratacak ve paketinizin sıkıştırılmış halini içerecek.

Şimdi bu sıkıştırılmış paketi twine aracılığıyla pypi’ye yükleyeceğiz. Twine.exe pip ile indirildiği zaman benim yerel bilgisayarımda aşağıdaki dizine kaydedildi.

C:\Users\Sefik\AppData\Roaming\Python\Python36\Scripts\twine.exe

Bu dizini ortam değişkeni olarak eklerseniz twine komutunu çalıştırabileceksiniz. Ya da uzun uzun dizin bilgisi ile birlikte twine demeniz gerekecektir.

Twine komutu çağırıldıktan sonra size pypi üyelik bilgilerinizi soracak. Kullanıcı adı ve şifrenizi komut satırına girdikten sonra paketiniz pypi üzerinden indirilebilir hale gelecektir.

Böylelikle paket yayınlama işlemi tamamlanmış olacak. Paketiniz pip install komutu ile artık indirilebilir. Böylelikle paketiniz daha çok kişiye ulaşabilir olacak. Açık kaynağın gelecek olduğunu unutmayın!

Bu yazı Publishing Python Packages on Pip and PyPI yazısından Türkçe’ye çevrilmiştir.

Yorum yaz

Email adresiniz yayınlanmayacaktır.