Modülleri Paketleyip Paylaşmak

Python'u ilk başta duşunup koda doken adamlar onlardan sonraki gelecek nesilleri daha en baştan duşunmuşler.Yeni geliştiriciler kod yazsında diğer geliştiricilerle paylaşsın kendisini geliştirsin diye her turlu kolaylığı sağlamışlar.Benim Python'un sevdiğim en guzel yanlarından birisi de kesinlikle bu.Çunku yazdığım kodu setuptools araçları ile paketleyip diğer kullanıcılarında benim modullerimi kullanılır hale getirebiliyorum.Bunu da sadece birkaç ufak komut ile yapıyorum.Yani Python'un bizden tek beklentisi var.Sadece kod yaz,paylaş,başkalarının kodlarını kullan ve kendini geliştir.

Bugun bu konulardan paylaş bolumunu içeren kısmı en basit ayrıntılarıyla anlatmaya çalışacağım.Çunku bu konuda Python'a başlattığım bazı kişiler çok fazla soru sormaya başladılar.Demek ki hepsi artık bir eşik değerini aştılar.

Öncelikle paylaşımını yapacağımız ornek bir gereksiz fonksiyon yazalım.Bu fonksiyon o kadar gereksiz olsun ki bu koda bakan kişiler acaba bu adam ne duşundu de bu kodu yazdı diyip google'da araştırma yapıp siteme gelsin ve bana hit kazandırsın :D

Tabi siz bu kadar acımasız duşunmek yerine yazdığınız yararlı kodlarıda paylaşabilirsiniz.Ben aşağıdaki bir hayli gereksiz,saçma sapan kodu paylaşıma ornek gostermek amacıyla yazdım.Mantığına değinmek gerekirse cevir fonksiyonuna gonderilecek string değermi diye en başta kontrol ediliyor daha sonra eğer string ise ve uzunluğu tek ise bu kelime birkaç değişiklik yapıp liste olarak geri donduruyor.

def cevir(kelime):
    """

    Gonderilen Strink tipindeki karakterlerin eger tek sayi uzunlugunda ise tam oradaki degerine : atayip,listeyi buradan boluyor.

    Daha sonra bu bolunen harfleri yeni bir liste haline getirip return ile geri donduruyor.

    Olabildigince gereksiz ve kimsenin isine yaramaz bir moduldur.Gene de kullanmak isteyenlere hayir demiyorum.

    """
    if type(kelime) == type("kelime"):
        uzunluk = len(kelime)

        if uzunluk % 2 == 0:
            print "Gonderdiginiz kelimenin uzunlugu cifttir.Sadece tek gonderebilirsiniz."

        if uzunluk % 2 == 1:

            kelime = list(kelime)
            kelime[uzunluk/2] = ":"
            kelime = str(kelime)
            yeni = kelime.split(":")

            yenikelime = []

            yenikelime.append(yeni [1][9])
            yenikelime.append(yeni [1][4])
            yenikelime.append(yeni [0][7])
            yenikelime.append(yeni [0][2])

            return yenikelime
    else:
        print "Sadece string tipi degisken gonderebilirsiniz!"

Ve bi hayli gereksiz olan modulumuzu hazırladık.Daha sonra bu kodlarımız çalışıyormu aynı dizinde test ettim.Gayet gereksiz bir biçimde çalışıyor.Şimdi ben PyCharm editorumde bulunan Tools->Create setup.py sekmesinden oluşturacağım setup.py dosyasının içeriğini belirliyorum.Siz el ile de yapabilirsiniz.Aşağıdaki kodun aynısını kendinize gore duzenleyebilirsiniz.

Python PyCharm Setup Tools

Oluşturulan setup.py dosyasının içeriği aşağıdadır.

from distutils.core import setup

setup(
    name='gereksiz',
    version='0.1',
    packages=[''],
    url='www.halitalptekin.com',
    license='GPL',
    author='Halit Alptekin',
    author_email='info@halitalptekin.com',
    description='String tipindeki karakterleri reverse metoduna benzer sekilde geri dondurur.'
)

Ve gorunumu aşağıdaki gibi oluyor.

Python PyCharm Setup Tools

Ve bu modulumuz için uygun şekilde bir yardım dosyası oluşturuyoruz.

Python Setup Tools Readme

Ve artık yapmamız gerekenler buyuk oranda bitti.Bundan sonra yaptığımız modulu dağıtıma hazır hale getirmek için setuptools'tan faydalanacağız.Bunun için oncelikle python setup.py sdist komutunu çalıştırıyoruz.

Python Setup Tools Sdist

Bu komuttan sonra o dizinde dağıtıma hazır bir tar.gz dosyası ve dosya listesinin bulunduğu manifest oluşuyor.Ve artık python setup.py install diyerek bu modulumuzu bir kuralım.

Python Setup Tools Install

Burada sudo komutunu kullanma sebebim python dizinine yazma yetkisi almak içindir.Ubuntuda guvenlik için bu şekilde bir uygulama var.Ve artık sıra geldi modulumuzu PyPi'ye yuklemeye.

Öncelikli olarak PyPi sitesine girip kayıt oluyoruz.Buraya kayıt olurken kullandığımız kullanıcı adı ve şifreyi bizim için onemli.Kayıt olduktan sonra tekrardan konsola donuyoruz ve python setup.py register komutuyla uygulamamızı kayıt ediyoruz.Burada size kullanıcı adınız ve şifreniz sorulacak.Doğru şekilde verdiğiniz takdirde serverdan 200 değerini almanız lazım.Kayıdı tamamladıktan sonra uygulamamızı PyPi'ye yukluyoruz.Bunun için python setup.py sdist upload komutunu uyguluyoruz.Ve uygulamamız PyPi'ye gitti.

Python PyPi Register

Bu işlemden sonra PyPi'ye girip uygulamamıza bir goz atalım.

Python Pypi Control

Ve bir hayli gereksiz uygulamamızı başarıyla yukledik.Bundan sonra bizim modulumuzu kullanmak isteyenler pip install gereksiz komutuyla başarıyla kurabilirler.Ve bu modulumuzun gercekten yuklenip yuklenmediğini ipython kullanarak test edelim.

Python Modul Import

Ve gercekten hiçbir işe yaramayan, gereksiz, saçma sapan modulumuz gerçekten de çalışıyor.Siz daha yararlı başkalarının işine gerekli uygulamaları paylaşırsanız Python için daha iyi olacaktır :D

comments powered by Disqus