Bu yazıda kısaca python için yazılmış uygulamaları nasıl paket haline getirilir konusuna değineceğim. Ilk önce;

PYPI nedir?

PyPI — The Python Package Index

Yazdığımız projeleri buraya ekleyerek pip install paket seklinde çalışma dizinimize indirerek kullanmaya çalışacağız.

Hadi paket olusturalım.

Ilk önce çalışma dizininden bahselim.

project   #(1)
│   setup.py
│   setup.cfg    
│   LICENSE.txt   
│   README.md    
│
└───project  #(2)
    │   app1.txt
    │   app2.txt
    │

Yukarıda 1 etiketi ile belirttiğim yer projemizi PyPi gönderirken setlememiz gereken verilerinde yer aldığı dizin. 2 etiketi ile belirttiğim dizin ise projemizin kodlarınin bulunduğu yer olarak kısaca özetleyeyim. Uygulamanızı yukarıdaki hiyerarşiye getirmeniz gerekiyor.

PyPi konfigürasyonu

Eski kaynaklara bakan arkadaşlar için uyarayım. Pypi için bazı gereksinimler artık bulunmuyor. Mesela ilk önce test serverına yüklememiz bekleniyordu. Şimdi buna gerek duymadan direk yükleme işlemi yapılıyor. Kafa karışmadan direk konuya geçeyim.

cd $HOME komutunu terminale yazın ve bulunduğunuz dizine .pypirc adında bir dosya oluşturun. Içine ise kendi bilgilerinizi değistirerek şunları yazmanız gerekiyor.

[distutils]
index-servers =
  pypi

[pypi]
repository: https://pypi.python.org/pypi
username: [kullanici_adi]
password: [parola]

Bu kısım tamamdır, şimdi çalışma dizinimize tekrar dönebiliriz.

Setup kısımları

Burada uygulamanın önemli bilgilerini setleyeceğiz. Ama ilk önce projemizi github vb. yerlere göndermemiz gerekiyor. Standart bir sekilde github’a push yapma islemini yaptiktan sonra şu aşagıdaki iki komutu çalıştırın.

git tag 0.1 -m 'bu bir denemedir'
git push origin 0.1

Bu aşamadan sonra aşağıdaki verileri kendinize uygun olarak setleyin.

setup.py

from distutils.core import setup

setup(
  name = 'name',
  packages = ['name'], 
  version = '0.1',
  description = 'proje açıklaması',
  author = 'isminiz',
  author_email = 'mailiniz',
  url = 'https://github.com/kullaniciadi/repoadı',
  download_url = 'https://github.com/kullaniciadi/repoadı/tarball/0.1',
  keywords = ['etiketler1', 'etiketler2'],
  install_requires = ["numpy"], # Burada projeniz için kullandığıniz paketleri tanimlamanız gerekiyor. Yani dependence...
  classifiers = [],
)

Readme kısmını buradan tanımlıyoruz. Burayı kendimizde manipüle edebilirdik.

setup.cfg

[metadata]
description-file = README.md

license.txt

Bu konuyu araştırmanız gerekiyor. Cünkü bu konu ayrıca bir blog yazısını hak ediyor. Şu kaynaktan bakabilirsiniz: Açık Kaynak Lisansları

Vee tamamdır.

Son olarak bashte şu komutu çalıştıralım. Artık tamamdır.

python setup.py sdist upload -r pypi

Notlar:

Çok basit projedeki düzenlemeleri yapın ve istediğiniz düzenlemeyi 0.2 vb.. gibi şekilde tag‘layın. Hemen ardından setup.py üzerinden version kısmını düzenleyin ve download_url kısmındaki son version bilgilerini güncelleyin. Tekrar upload işlemi yapın. 10 dk içerisinde güncellenmiş halini pip ile indirebiliyor olacaksiniz.

IPython sizin en yakın dostunuz. Otamatik tamamlama ve yorumlayıcıda rahatlık sunması ile size büyük hız kazandıracak. Ilk önce onu bir edinin. Simdi ise from paket_ismi import dosya_ismi ile dosyayi import edin. Içinde bir class veya fonksyionu dosya_ismi.Class() gibi notasyonlarda kullanmayı deneyin. Bunu başarabilirsiniz; size güveniyorum. :)