Python Modüllerini Dağıtma
**************************

E-posta:
   distutils-sig@python.org

Popüler bir açık kaynak geliştirme projesi olarak Python,
yazılımlarını diğer Python geliştiricilerinin açık kaynak lisans
koşulları altında kullanmasını sağlayan, aktif destek sağlayan
katılımcı (contributor) ve kullanıcı topluluğuna sahiptir.

Bu, Python kullanıcılarının, ortak havuza kendi çözümleriyle
potansiyel olarak katkıda bulunmanın yanı sıra, ortak (ve hatta bazen
nadir!) sorunlara karşı halihazırda oluşturdukları çözümlerden
yararlanarak, Python kullanıcılarının etkin bir şekilde paylaşımda
bulunmalarına ve işbirliği yapmalarına olanak tanır.

Bu kılavuz, sürecin dağıtım bölümünü kapsar. Diğer Python projelerini
kurmaya yönelik bir kılavuz için installation guide 'e bakın.

Not:

  Kurumsal kullanıcılar için, birçok kuruluşun açık kaynaklı
  yazılımları kullanma ve bunlara katkıda bulunma konusunda kendi
  politikaları olduğunu unutmayın. Python ile sağlanan dağıtım ve
  kurulum araçlarını kullanırken lütfen bu tür politikaları dikkate
  alın.


Anahtar terimler
================

* Python Package Index , diğer Python kullanıcıları tarafından
  kullanıma sunulan açık kaynaklı lisanslı paketlerin bir yazılım
  deposudur.

* Python Packaging Authority , standart paketleme araçlarının, ilgili
  meta verinin ve dosya formatı standartlarının bakımından ve
  geliştirilmesinden sorumlu geliştiriciler ve dokümantasyon yazarları
  grubudur. Hem GitHub hem de Bitbucket üzerinde çeşitli araçlar,
  dokümantasyon ve sorun izleyicileri bulundururlar.

* "distutils", Python standart kitaplığına ilk kez 1998 yılında
  eklenen orijinal derleme ve dağıtım sistemidir. "distutils" 'in
  doğrudan kullanımı aşamalı olarak kaldırılırken, halen mevcut
  paketleme ve dağıtım altyapısının temelini atmıştır. Yalnızca
  standart kitaplığın bir parçası olmakla kalmaz, adı başka şekillerde
  de yaşar (Python paketleme standartları geliştirmeyi koordine etmek
  için kullanılan posta listesinin adı gibi).

* setuptools ilk olarak 2004'te yayınlanan "distutils" için (büyük
  ölçüde) bir eklentidir. Değiştirilmemiş "distutils" araçlarına göre
  en dikkate değer ilavesi, diğer paketlere bağımlılıkları bildirme
  yeteneğiydi. Şu anda, çok çeşitli Python sürümlerinde daha yeni
  paketleme standartları için tutarlı destek sunan "distutils" 'e daha
  düzenli olarak güncellenen bir alternatif olarak önerilmektedir.

* wheel (bu bağlamda), "bdist_wheel" komutunu "distutils"/setuptools
  dizinine ekleyen bir projedir. Bu, Python kütüphanelerinin, (ikili
  uzantıları içerenlerin bile) bir sisteme yerel olarak kurulmasına
  gerek kalmadan kurulmasına izin veren bir çapraz platform ikili
  paketleme biçimi ("wheels" veya "wheel files" olarak adlandırılır ve
  **PEP 427** 'de tanımlanır) üretir.


Açık kaynak lisanslama ve işbirliği
===================================

Dünyanın çoğu yerinde, yazılım otomatik olarak telif hakkı
kapsamındadır. Bu, diğer geliştiricilerin yazılımı kopyalamak,
kullanmak, değiştirmek ve yeniden dağıtmak için açık izne ihtiyaç
duyduğu anlamına gelir.

Açık kaynak lisanslama, bu tür bir izni nispeten tutarlı bir şekilde
açıkça vermenin bir yoludur ve geliştiricilerin çeşitli sorunlara
ücretsiz olarak ortak çözümler sunarak verimli bir şekilde
paylaşmasına ve işbirliği yapmasına olanak tanır. Bu, birçok
geliştiricinin kendi özel durumlarına nispeten benzersiz olan
sorunlara odaklanmak için daha fazla zaman harcamasına izin verir.

Python ile sağlanan dağıtım araçları, geliştiricilerin, isterlerse bu
ortak yazılım havuzuna kendi katkılarını yapmalarını makul ölçüde
basit hale getirmek için tasarlanmıştır.

Aynı dağıtım araçları, yazılımın açık kaynaklı yazılım olarak
yayınlanıp yayınlanmadığına bakılmaksızın, bir kuruluş içinde yazılımı
dağıtmak için de kullanılabilir.


Araçları yükleme
================

Çekirdek geliştirme ekibi, Python'un eski sürümlerinde bile tutarlı
bir şekilde çalışan standart araçlara sahip olmanın önemli olduğunu
keşfettiğinden, standart kütüphane, modern Python paketleme
standartlarını destekleyen derleme araçlarını içermez.

Şu anda önerilen derleme ve dağıtım araçları, komut satırında "pip"
modülü çağrılarak kurulabilir:

   python -m pip install setuptools wheel twine

Not:

  POSIX kullanıcıları için (macOS ve Linux kullanıcıları dahil), bu
  talimatlar bir *virtual environment* kullanıldığını varsayar.Windows
  kullanıcıları için bu talimatlar, Python'u kurarken sistem PATH
  ortam değişkenini ayarlama seçeneğinin seçildiğini varsayar.

Python Packaging Kullanıcı Kılavuzu, currently recommended tools
hakkında daha fazla ayrıntı içerir.


Python Paketleme Kullanım Kılavuzunu Okumak
===========================================

Python Paketleme Kullanıcı Kılavuzu, bir proje oluşturma ve
yayınlamayla ilgili çeşitli temel adımları ve öğeleri kapsar:

* (en) Proje Yapısı ;

* (en) Projeyi inşa etmek ve paketlemek ;

* (en) Projeyi Python Paket Dizinine yükleme ;

* (en) .pypirc dosyası.


Nasıl yaparım...?
=================

Bunlar, bazı genel görevler için hızlı yanıtlar veya bağlantılardır.


... projem için bir isim seçer misin?
-------------------------------------

Bu kolay bir başlık değil, ancak işte birkaç ipucu:

* adın zaten kullanımda olup olmadığını görmek için Python Paket
  Dizini'ni kontrol edin

* Bu ada sahip bir proje olup olmadığını görmek için GitHub, Bitbucket
  vb. gibi popüler barındırma sitelerini kontrol edin.

* düşündüğünüz isim için bir web aramasında ne çıktığını kontrol edin

* kullanıcıların yazılımınızı ararken bulmasını
  zorlaştırabileceğinden, özellikle birden çok anlamı olan yaygın
  sözcüklerden kaçının


... ikili uzantılar oluşturup dağıtmak?
---------------------------------------

Bu aslında oldukça karmaşık bir konudur ve tam olarak neyi başarmayı
amaçladığınıza bağlı olarak çeşitli alternatifler mevcuttur. Daha
fazla bilgi ve öneriler için Python Paketleme Kullanıcı Kılavuzuna
bakın.

Ayrıca bkz.: Python Paketleme Kullanıcı Kılavuzu: İkili Uzantılar
