Python İle Oluşturduğunuz Paketlerinizi(Modüllerinizi) PyPI’da Yayınlama Rehberi 5 PyPI’a Yüklenecek Modülün Yapılandırma Ayarlarının Yapılması


Merhabalar, bu yazımızda oluşturduğumuz modülün yapılandırma ayarlarını yapacağız.

Modülümüzü bir önceki yazımızda oluşturmuştuk oradan devam ediyor olacağız. O yüzden ilk olarak o yazıya göz atmalısınız, ilk bu yazıya denk geldiyseniz.

1 Yapılandırma Dosya Ve Klasör Yapısını Gör

Aşağıda gördüğümüz src klasörünü ve modülümüzü geçen yazıda oluşturmuştuk zaten. Şimdi sırayla diğer dosyaları ve içeriklerini oluşturacağız.

packaging_tutorial/
├── LICENSE
├── pyproject.toml
├── README.md
├── src/
│   └── example_package_YOUR_USERNAME_HERE/
│       ├── __init__.py
│       └── example.py
└── tests/

2 LICENCE İsminde Uzantısız Bir Dosya Oluştur

Bunu oluşturacağımız yer kök dizindir. Yani ilk proje dosyamızın içi. Src içindeki Modül içine koymayınız.

Dosyayı oluşturunuz ve içine aşağıdaki metni yapıştırınız.

Copyright (c) 2018 The Python Packaging Authority

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

3 README.md Dosyasını Oluştur

Proje ile alakalı bilgileri paylaştığımız README.md dosyasını oluşturunuz ve içine aşağıdaki metni şimdilik örnek olarak koyunuz.

# Example Package

This is a simple example package. You can use
[Github-flavored Markdown](https://guides.github.com/features/mastering-markdown/)
to write your content.

4 pyproject.toml Dosyasını Oluştur

Projenin ana yapılandırma dosyası burasıdır. Modül ile alakalı bilgiler bu dosya içinde sağlanır.

pyproject.toml, projeniz için dağıtım paketleri oluşturmak üzere pip gibi “önyüz” derleme araçları ve hangi “arka uç” aracının kullanılacağını söyler. Bir dizi paket oluşturma modülleri arasından seçim yapabilirsiniz; biz setuptools modülünü kullanacağız. Bununla beraber hatchling, Flit, PDM ve diğerleri kullanılabilir, aynı şekilde çalışacaktır.

Her biri için yapılandırma kodlarını aşağıda paylaşıyorum.

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"


[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"


[build-system]
requires = ["flit_core>=3.2"]
build-backend = "flit_core.buildapi"


[build-system]
requires = ["pdm-pep517"]
build-backend = "pdm.pep517.api"

Şimdi burada aşağıdaki kodu alıp .toml dosyası içine koyalım.

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

Sonra meta verilerini girebilmek için hemen altına aşağıdaki kodları koyalım. Güncellenmesi gereken alanlara bakacağız.

[project]
name = "example_package_YOUR_USERNAME_HERE"
version = "0.0.1"
authors = [
  { name="Example Author", email="author@example.com" },
]
description = "A small example package"
readme = "README.md"
requires-python = ">=3.7"
install_requires=["numpy>=1.14.0", "pandas>=0.23.4"]
classifiers = [
    "Programming Language :: Python :: 3",
    "License :: OSI Approved :: MIT License",
    "Operating System :: OS Independent",
]

dependencies = [
    "requests",
]

[project.urls]
"Homepage" = "https://github.com/pypa/sampleproject"
"Bug Tracker" = "https://github.com/pypa/sampleproject/issues"

name: Modülümüzün adıdır. Oluşturduğumuz modül ismi klasörü ile aynı olmak zorundadır.

version: Bu modülün versiyonunu belirlememize yardımcı olur. Her build işleminden önce buradaki sürümü güncelleyerek PyPI’a yüklenen sürüm için bilgi sağlamış oluruz. Aynı sürümde 2. bir build işlemi yapamazsınız.

authors: Burada modüle katkı sağlayan kişinin bilgileri girilir.

description: Modülle alakalı bir açıklama yazdığımız yerdir.

readme: Burada readme dosyamızın ismi ne ise onu veriyoruz.

requires-python: Gerekli olan python sürümünün bilgisi verilir.

dependencies : Yazdığımız modül içinde kullandığımız farklı modüller varsa, varsayılan olarak modülümüz kurulurken o paketlerinde yüklenmesini sağlayabiliriz. İşte yüklenecek paket bilgileri burada verilir.

classifiers: sınıflandırıcılar dizini verir ve paketiniz hakkında bazı ek meta verileri pipler. Bu durumda, paket yalnızca Python 3 ile uyumludur, MIT lisansı altında lisanslanmıştır ve işletim sisteminden bağımsızdır. Paketinizin en azından Python’un hangi sürüm(ler)inde çalıştığını, paketinizin hangi lisans kapsamında olduğunu ve paketinizin hangi işletim sistemlerinde çalışacağını her zaman belirtmelisiniz. Sınıflandırıcıların tam listesi için bkz. https://pypi.org/classifiers/

Projenizi herhangi bir repoda tutuyorsanız bunların bilgilerini aşağıdaki bölümde verebilirsiniz.

[project.urls]
"Homepage" = "https://github.com/pypa/sampleproject"
"Bug Tracker" = "https://github.com/pypa/sampleproject/issues"

Şimdi bu dosyayı modülümüze özel güncelleyip tekrar burada paylaşacağım.

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "MBCalculator"
version = "0.0.1"
authors = [
  { name="Murat Bilginer", email="muratbilginer09@gmail.com" },
]
description = "Bu Bir Hesap Makinesi Modülüdür - Toplama, Çıkarma, Bölme ve Çarpma İşlemi Yapar"
readme = "README.md"
requires-python = ">=3.7"

classifiers = [
    "Programming Language :: Python :: 3",
    "License :: OSI Approved :: MIT License",
    "Operating System :: OS Independent",
]

dependencies = [
    "requests",
]

[project.urls]
"Homepage" = "https://github.com/MuratBilginerSoft/Calc"
"Bug Tracker" = "https://github.com/MuratBilginerSoft/Calc/issues"

5 Tests Klasörünü Oluştur

Test işlemlerimiz için Tests isminde bir klasör oluşturalım.

Böylece yapılandırma işlemlerini tamamladık. Artık Build alabiliriz. Buna da bir sonraki yazımda bakıyor olacağız.

Exit mobile version