15 adımda kendi Python paketinize sahip olabilirsiniz

Her yazılım geliştirici ve veri bilimcinin bir paket yapması kaçınılmazdır. Bu makale Python açık kaynaklı paketler yapmak için bir kılavuz önermektedir.Umarım belirli adımlarla birlikte bu kılavuz, paketleri oluştururken çok fazla sabır ve zaman harcamaktan kurtarır. (MacOS sisteminin Python3.7 sürümü için geçerlidir)

Kendi kendine güzel şeyler inşa etmeye çalış!

1. Adım: Bir plan yapın

Nihai hedefimiz, kullanıcıların Jupyter not defterlerini HTML dosyalarına veya Python komut dosyalarına kolayca dönüştürmelerine olanak tanıyan çok basit bir Python kitaplığı oluşturmaktır.

Paketin ilk yinelemesi, kullanıcının print deyiminin işlevini çağırmasına izin verir.

Artık ne yapmak istediğimizi bildiğimize göre, paketi adlandırmamız gerekiyor.

Adım 2: Adlandırma

Adlandırma basit değil. Ad benzersiz, kısa ve hatırlaması kolay olmalıdır. Tamamı küçük harf olmalı, kesinlikle kısa çizgi, noktalama işareti veya alt çizgi olmamalıdır. Paketi adlandırırken, adın GitHub, Google ve PyPI'de mevcut olup olmadığını da onaylamanız gerekir.

Paket için yüksek beklentileriniz varsa ve bir gün GitHub'da 10.000 yıldız alacağını umuyorsanız, adın sosyal ağlarda kullanılıp kullanılamayacağını onaylamanız gerekir. Bu makaledeki örneklerde, çeşitli platformlarda kullanılabilmesi, kısa ve açıklayıcı olması nedeniyle pakete notebookc adını verdik.

3. Adım: Yapılandırmayı kontrol edin

Python3.7, GitHub ve Homebrew'u kurup yapılandırdığınızdan emin olun. Gerekirse aşağıdan indirebilirsiniz:

Python

Python3.7'yi indirin ve yükleyin: https://www.python.org/downloads/

GitHub

Ücretsiz GitHub hesap kaydı: https://github.com/join

Git'i yükleyin: https://help.github.com/articles/set-up-git/

Homebrew

Homebrew, Mac sistemleri için benzersiz bir paket yöneticisidir. (Kurulum talimatları: https://brew.sh/).

Venv

Python 3.6 sürümünü kullanıyorsanız, paketi oluşturmak için sanal bir ortam oluşturmak için venv kullanmanız önerilir. Python ile sanal ortamları yönetmenin birçok yolu vardır ve izlenecek pek çok öneri vardır.

Python 3.3'ten başlayarak Python, venv ile birlikte gelir, ancak Python 3.4'ten başlayarak, venv'in pip ve setuptools'u sanal bir ortama yükleyebileceği unutulmamalıdır.

Python3.7'de sanal bir ortam oluşturmak için aşağıdaki komutu kullanın:

python3.7-m venv my_env

Sanal ortamı etkinleştirmek için my_env'i favori adınızla değiştirin:

sourcemy_env / bin / activ

Artık terminal isteminin sol ucunda (my_env) veya sanal ortama verdiğiniz adı görebilirsiniz.

Tamamlandıktan sonra, sanal ortamı devre dışı bırakmak için devre dışı bırak seçeneğini kullanın.

Bundan sonra, GitHub'da kurun.

4. Adım: GitHub'da bir kuruluş oluşturun

GitHub, sürüm kontrol kaydında pazar lideridir ve GitLab ve Bitbucket dahil diğerleri de çok popülerdir. Bu kılavuzda GitHub kullanıyoruz.

GitHub'da yeni bir organizasyon oluşturmak için istemleri izleyin. Organizasyon not defterine tüm adını verdik. Kişisel hesabınız altında bir depo oluşturabilirsiniz, ancak hedeflerimizden biri, daha büyük bir grup için nasıl açık kaynaklı bir proje oluşturacağınızı öğrenmektir.

Adım 5: GitHub deposu oluşturun

Yeni bir bilgi tabanı oluşturun.

Açılır listeden gitignore'u ekleyin ve bilgi tabanınız için Python'u seçin. Gitignore dosyasının içeriği, Git deposundan dışlanacak klasör ve dosya türüyle eşleşir. Gereksiz veya hassas diğer dosyaları kaldırmak için gitignore'u daha sonra değiştirebilirsiniz.

Kullanıcıların bilgi tabanı içeriğiyle neler yapabileceklerini belirleyen açılır listedeki Lisans ekle'den bir lisans seçmeniz önerilir. Bazı lisanslar daha izin vericidir. Herhangi bir lisans seçilmezse, sistem varsayılan telif hakkı yasasını kullanacaktır.

Bu makalenin projesi Genel Kamu Lisansları v3.0'ı (Genel Kamu Lisansları v3.0) seçti çünkü yaygın olarak kullanıldı ve Wikipedia'dan "son kullanıcıların yazılımı çalıştırma, öğrenme, paylaşma ve değiştirme özgürlüğünü garanti edebilir".

6. Adım: Dizinleri kopyalayın ve ekleyin

Bilgi tabanını yerel olarak kopyalamak istediğiniz yeri seçin ve ardından aşağıdaki talimatları izleyin:

Git https://github.com/notebooktoall/notebookc.git kopyala

Alternatif organizasyonlar ve bilgi tabanları.

Proje klasörüne girmek için masaüstü grafik kullanıcı arabirimini (GUI) veya kod düzenleyiciyi kullanın veya proje klasörüne girmek için cd my-project komut satırını kullanın ve ardından dosyayı görüntülemek için ls-A kullanın. İlk klasörler ve dosyalar aşağıdaki gibidir:

.git .gitignore LİSANS README.rst

Ana proje dosyası için bir alt klasör oluşturun Alt klasörün adının paketin adıyla aynı olması ve adın boşluk içermediğini onaylamanız önerilir.

Alt klasörde __init__.py adlı bir dosya oluşturun Bu dosya boş bırakılabilir. Bu dosya, bir dosyayı bir alt klasöre aktarırken gereklidir.

Alt klasörle aynı ada sahip başka bir dosya oluşturun ve dosya adından sonra .py ekleyin. Dosya adım notebook.py. Bu Python dosyasını istediğiniz gibi adlandırabilirsiniz.

Şimdi notebookc dizininin içeriği aşağıdaki gibidir:

.git .gitignore LİSANS README.rst notebookc / __ init__.py notebookc / notebookc.py

7. Adım: requirements_dev.txt dosyasını oluşturun ve yükleyin

Proje dizininin en üstünde bir requirements_dev.txt dosyası oluşturun. Genellikle bu dosya, requirements.txt olarak adlandırılır. Bu adlandırma, bu paketlerin tamamının geliştiriciler tarafından yüklendiğini vurgular.

Requirements_dev.txt dosyasında belirli bir pip ve wheel sürümü yüklemeniz gerekir.

pip == 19.0.3

tekerlek == 0.33.1

Burada iki eşit işaretin ve sürüm numarasının yüklenmesi gereken paketin tam sürümünü belirtmek için kullanıldığını unutmayın.

Paketin belirli sürümünü gereksinimleri_dev.txt dosyasına yükleyin.

Ortak geliştirici proje bilgi tabanını bölmek ve belirli gereksinimler_dev.txt paketini yüklemek için pip kullanmak istiyorsa, paketin sizinle aynı sürümünü kullanmanız gerekir. Ek olarak, bir dosya oluştururken, Read TheDocs bu dosyayı paketi yüklemek için kullanabilir.

Etkinleştirilmiş sanal ortamda, paketi gereksinim_dev.txt dosyasına yüklemek için aşağıdaki komutu kullanın:

pipinstall -r gereksinimleri_dev.txt

8. Adım: Kodlama ve gönderme

Örnek olarak önce çok basit bir fonksiyon oluşturalım. Daha sonra harika bir işlev oluşturabilirsiniz.

Aşağıdakileri ana dosyaya yazın:

(Notebookc / notebookc / notebookc.py yazacağız)

def convert (my_name): "" " Bir not defterini dönüştürmekle ilgili bir satır yazdırın. Args: my_name (str): kişinin adı İadeler: Yok "" " print (f "Bir gün sizin için bir not defterini dönüştüreceğim, {my_name}.")

Oluşturduğumuz işlev budur.

Dokümanlar art arda üç çift tırnak ile başlar ve biter. Gelecek makalelerde, belgeleri otomatik olarak oluşturmak için kullanılacaklar.

Değişiklikleri şimdi gönderin.

9. Adım: setup.py'yi oluşturun

Setup.py dosyası, paketin derleme komut dosyası dosyasıdır. Kurulum araçlarının kurulum işlevi, PyPI'ye yüklenecek paketi oluşturabilir. Kurulum araçlarında kullanıcıların ihtiyaç duyduğu program paketi bilgileri, sürüm numarası ve diğer program paketi bilgileri vardır.

Aşağıda, bu makale için setup.py dosyasına bir örnek verilmiştir:

kurulum araçlarından kurulumu içe aktar, find_packages open ("README.md", "r") asreadme_file ile: readme = readme_file.read () gereksinimler = kurmak( name = "notebookc", version = "0.0.1", yazar = "Jeff Hale", author_email = "jeffmshale@gmail.com", description = "Jupyter Notebook'unuzu dönüştürmek için bir paket", long_description = benioku, long_description_content_type = "text / markdown", url = "https://github.com/your_package/homepage/", paketler = bul_ paketler (), install_requires = gereksinimler, sınıflandırıcılar = , )

Long_description'ın README.md dosyasının içeriğinde bulunduğunu unutmayın.

Setuptools.setup.install_requiresincludes içinde belirtilen gereksinimler listesi, paketin çalışması için gereken tüm bağımlı paketleri içerir.

Requirements_dev.txt dosyasındaki geliştirme için gerekli paketlerin aksine, bu paket listesi olabildiğince gevşek olmalıdır.

İnstall_requires paket listesini yalnızca ihtiyacınız olan paketlerle sınırlayın. Kullanıcıların gereksiz paketleri yüklemesini istemezsiniz. Yalnızca Python standart kitaplığının parçası olmayan paketleri listelemeniz gerektiğini unutmayın. Kullanıcılar paketinizi kullanmak istiyorsa, Python'u yüklemeleri gerekir.

Bu paket herhangi bir dış bağımlılık gerektirmediğinden, yukarıda listelenen dört paketi ortadan kaldırabilirsiniz. Ortak geliştirici proje bilgi tabanını bölmek ve pip ile belirli bir paketi kurmak istiyorsa, sizinle aynı paket sürümünü kullanın.

Kodu yerel Git deposuna gönderin. Artık her şey hazır olduğuna göre paketi oluşturmaya başlayabilirsiniz!

10. Adım: İlk sürümü oluşturun

Twine, PyPI üzerinde Python paketlerini güvenle yayınlayabilen bir yardımcı program grubudur. İplik paketini bir sonraki boş gereksinim_dev.txt satırına aşağıdaki gibi ekleyin:

sicim == 1.13.0

Ardından Twine'ı sanal ortama kurmak için requirements_dev.txt paketini yeniden kurun.

pipinstall -r gereksinimleri_dev.txt

Ardından paket dosyasını oluşturmak için aşağıdaki komutu çalıştırın:

pythonsetup.py sdist bdist_wheel

İşlem sırasında birçok gizli klasör oluşturulacak: dist, build, vb. Notebookc.egg-info'u oluşturdum. Dist klasöründeki dosyalara bakalım. .Whl dosyası, dağıtımın oluşturduğu Wheel dosyasıdır. .Tar.gz dosyası, sıkıştırılmış bir kaynak kodu dosyasıdır.

Tekerlek

Pip, kullanıcının cihazında, tıpkı tekerlekler gibi, mümkün olduğunda paketleri kuracaktır. Tekerlek takıldığında daha hızlıdır. Pip tekerleği kuramadığında, kaynak kodlu sıkıştırılmış dosyaya dönecektir.

Tekerlek ve kaynak kodu sıkıştırılmış dosyaları yüklemeye hazırlanalım.

11. Adım: Bir TestPyPI hesabı oluşturun

PyPI, resmi Python paket yöneticisi olan Python Paket Dizini'nin kısaltmasıdır. pip, yerel olarak yüklenmeyen dosyaları PyPI'den alabilir.

PyPI

TestPyPI, PyPI'de çalışan bir test sürümüdür. Test sitesine ve resmi siteye yüklenen şifrelerin farklı olduğunu unutmayın.

Bir TestPyPI hesabı oluşturun: https://test.pypi.org/account/register/.

12. Adım: TestPyPI'da yayınlayın

Sicim

Paketinizi TestPyPI'ye güvenle yayınlamak için Twine'ı kullanın. Aşağıdaki komutları yazın - değişiklik gerekmez.

twineupload --repository-url https://test.pypi.org/legacy/ dist / *

Kullanıcı adınızı ve şifrenizi girmeniz istenecektir. Unutmayın, TestPyPI ve PyPI şifreleri farklıdır.

Gerekirse paket hatasını düzeltin, setup.py'de yeni bir sürüm numarası oluşturun ve eski yapı, dağıtım ve yumurta klasörlerini silin. Pythonsetup.py sdist bdist_wheel ile yeniden oluşturun ve Twine ile tekrar yükleyin. TestPyPI üzerindeki sürüm numaraları anlamsızdır, bu büyük bir mesele değil çünkü bu paket sürümlerini kullanan tek kişi sizsiniz.

Paketi başarıyla yükledikten sonra, kurulabileceğini ve kullanılabileceğini onaylayın.

Adım 13: Kurulumu ve kullanımı onaylayın

Terminalde başka bir etiket oluşturun ve başka bir sanal ortam oluşturun.

python3.7-m venv my_env

Etkinleştirin

kaynak my_env / bin / activ

Paketi resmi PyPI web sitesine yüklediyseniz, paketi pip ile yükleyeceksiniz. Paketi PyPI'de alabilir ve değiştirilmiş komutla kurabilirsiniz.

Paketi TestPyPI'den yüklemek için resmi talimatlar aşağıdaki gibidir:

Kurulum paketini TestPyPI'de PyPI'ye indirmek yerine - index-url flag komutu pip ile indirebilirsiniz.

pip kurulumu - index-url https://test.pypi.org/simple/ my_package

Pip'in PyPI'deki diğer paketleri indirmesine izin vermek istiyorsanız, - extra-index-url komutunu PyPI'ye yönlendirebilirsiniz. Bu, test ettiğiniz paketin bağımlılıkları varsa çok kullanışlıdır.

pipinstall --index-url https://test.pypi.org/simple/ --extra-index-urlhttps: //pypi.org/simple my_package

Paketinizin paket bağımlılıkları varsa, yukarıda belirtilen ikinci komutu kullanın ve paket adınızı değiştirin.

Sanal ortama kurulan paketin en son sürümüne bir göz atmalısınız.

Paketin kullanılabileceğini doğrulamak için terminalde python ile bir IPyon oturumu başlatın.

İşlevi içe aktarın ve işlevi dize parametreleriyle çağırın. Kodum aşağıdaki gibidir:

fromnotebookc.notebookc import convert

dönüştürmek ("Jeff")

Daha sonra aşağıdaki çıktıyı görebilirsiniz:

Bir gün senin için bir defter dönüştüreceğim Jeff.

Kullanılabileceğini onaylayın.

Tamam, şimdi çalışmayı Git Hub'a yükleyin.

Adım 14: GitHub'a yükleyin

Kodunuzun gönderildiğinden emin olun.

Notebookc proje klasörü aşağıdaki gibidir:

.git .gitignore LİSANS README.md gereksinimler_dev.txt setup.py notebookc / __ init__.py notebookc / notebookc.py

Yüklemek istemediğiniz sanal ortamı ortadan kaldırın. Bilgi tabanı oluşturulurken seçilen Python .gitignore dosyası, bileşenlerin indekslenmesini engeller.

Sanal ortam klasörünü silmeniz gerekebilir.

Yerel şubeyi GitHub'a aktarmak için git pushorigin my_branch. Kullanın.

Adım 15: Halkla İlişkiler oluşturma ve birleştirme

Tarayıcınızda Github'ı açın, pull request seçeneğini görebilirsiniz. PR'nizi oluşturmak ve birleştirmek için yeşil düğmeye uzun basın ve uzak özellik dalını silin.

Terminale geri dönün, yerel özellik dalını silmek için gitbranch -d my_feature_branch kullanın.

Gözden geçirme: Bir program paketi oluşturmak için 15 adım

1. Bir plan yapın

2. Adlandırma

3. Yapılandırmayı kontrol edin

4. GitHub'da bir organizasyon oluşturun

5. Bir GitHub deposu oluşturun

6. Dizinleri kopyalayın ve ekleyin

7. requirements_dev.txt dosyasını oluşturun ve yükleyin

8. Kod ve gönderme

9. setup.py'yi oluşturun

10. İlk sürümü oluşturun

11. TestPyPI hesabı oluşturun

12. TestPyPI'da yayınlayın

13. Kurulumu ve kullanımı onaylayın

14. GithHub'a yükleyin

15. Halkla İlişkiler oluşturma ve birleştirme

Jia Yueting LeTV Crisis'i seslendirdi: Geri ödeyeceğim!
önceki
Japon ligindeki entrika, Doğu Asya futbolunun zevkine katkıda bulundu.
Sonraki
Japon ligindeki entrika, Doğu Asya futbolunun zevkine katkıda bulundu.
Beyaz kuğu, siyah kuğu, gri kuğu? Evrişimli sinir ağı, tanınmanıza yardımcı olur
Changan'ın ilk coupe SUV CS85'in şüpheli fiyatı ortaya çıktı: 150.000 ila 180.000 RMB
Bu operasyon nedir? Petya fidye yazılımı fidyesi 250.000 ABD Dolarına yükseldi!
Veri bilimcisi ile veri mühendisi arasındaki fark nedir?
SSD sabit sürücülerin fiyatı düştü ve şimdi işlerin yeniden yavaşlaması gerektiği görülüyor!
Samsung S10 Sanayi ve Bilgi Teknolojileri Bakanlığı sık sık yabancı medyaya maruz kaldı, netizenler gerçek makine kullanıldıktan sonra buna inanmadı
Yüksek Sesle Haber | Çin'in futbol endüstrisi, tam sermaye penetrasyonu hala "kapıyı durdurmaktan" yetersiz
Haftalık görüşmeler | Çin takımı Dünya Kupası'na da "katılabilir" CES fuarı teknoloji şirketleri için sadece bir sahne değil
Ele.me.com'un birleşme sonrası mücadele etkinliği Hisse fiyatı düşen Meituan gerçekten tutabilir mi?
Kod ayrıntıları: inanılmaz doğruluk! Kredi R ile bir kredi riski puanlama modeli oluşturun
İpuçları | Bitiremiyorsanız, karpuzu buzdolabına koymayın! Bu yöntemle iki gün fena değil
To Top