Hiç kimse OP'nin bu sorusunu henüz ele almadığından:
Ne yapmak istedim:
Python modülünü "pip install ..." ile kurabilir hale getirin
İşte mutlak minimum örnek hazırlama ve kullanma PyPI için paketi yükledikten temel aşamalarını gösteren setuptools
ve twine
.
Bu hiçbir şekilde en azından öğreticiyi okumak için bir alternatif değildir, bu çok temel örnekte kapsanmaktan çok daha fazlası vardır.
Paketin kendisinin oluşturulması zaten burada başka cevaplarla kaplıdır, bu yüzden bu adımı ele aldığımızı ve proje yapımızın şöyle olduğunu varsayalım:
.
└── hellostackoverflow/
├── __init__.py
└── hellostackoverflow.py
setuptools
Paketleme için kullanmak için bir dosya eklememiz gerekiyor setup.py
, bu projemizin kök klasörüne gidiyor:
.
├── setup.py
└── hellostackoverflow/
├── __init__.py
└── hellostackoverflow.py
En azından, paketimiz için meta verileri belirtiyoruz, setup.py
şuna benzer:
from setuptools import setup
setup(
name='hellostackoverflow',
version='0.0.1',
description='a pip-installable package example',
license='MIT',
packages=['hellostackoverflow'],
author='Benjamin Gerfelder',
author_email='benjamin.gerfelder@gmail.com',
keywords=['example'],
url='https://github.com/bgse/hellostackoverflow'
)
Ayarladığımızdan beri license='MIT'
, projemize bir kopya olarak LICENCE.txt
reStructuredText'teki bir benioku dosyasının yanı sıra şunları ekliyoruz README.rst
:
.
├── LICENCE.txt
├── README.rst
├── setup.py
└── hellostackoverflow/
├── __init__.py
└── hellostackoverflow.py
Bu noktada, ambalajı kullanmaya başlamaya hazırız setuptools
, eğer zaten kurulu değilse, aşağıdakileri kurabiliriz pip
:
pip install setuptools
Bunu yapmak ve a oluşturmak için source distribution
, proje kök klasörümüzde setup.py
, komut satırından istediğimizi belirterek şunu çağırıyoruz sdist
:
python setup.py sdist
Bu, dağıtım paketimizi ve yumurta bilgilerimizi oluşturacak ve paketimizde şu şekilde bir klasör yapısına yol açacaktır dist
:
.
├── dist/
├── hellostackoverflow.egg-info/
├── LICENCE.txt
├── README.rst
├── setup.py
└── hellostackoverflow/
├── __init__.py
└── hellostackoverflow.py
Bu noktada, kullanarak yükleyebileceğimiz bir paketimiz var pip
, bu yüzden proje kökümüzden (bu örnekte olduğu gibi tüm adlandırmalara sahip olduğunuzu varsayarak):
pip install ./dist/hellostackoverflow-0.0.1.tar.gz
Her şey yolunda giderse, şimdi bir Python yorumlayıcısı açabiliriz, karışıklıklardan kaçınmak için proje dizinimizin dışında bir yerde söyleyebilirim ve yeni parlak paketimizi kullanmaya çalışacağım:
Python 3.5.2 (default, Sep 14 2017, 22:51:06)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from hellostackoverflow import hellostackoverflow
>>> hellostackoverflow.greeting()
'Hello Stack Overflow!'
Paketin kurulduğunu ve çalıştığını doğruladığımıza göre, PyPI'ye yükleyebiliriz.
Canlı veri havuzunu denemelerimizle kirletmek istemediğimizden, test veri havuzu için bir hesap oluşturuyoruz twine
ve yükleme işlemi için kurulum yapıyoruz :
pip install twine
Şimdi neredeyse oradayız, hesabımız oluşturulduktan sonra twine
paketimizi yüklememizi söylüyoruz , kimlik bilgilerimizi isteyecek ve paketimizi belirtilen depoya yükleyecek:
twine upload --repository-url https://test.pypi.org/legacy/ dist/*
Şimdi PyPI test deposunda hesabımıza giriş yapabilir ve yeni yüklenen paketimize bir süre hayret edebilir ve ardından şunu kullanarak yakalayabiliriz pip
:
pip install --index-url https://test.pypi.org/simple/ hellostackoverflow
Gördüğümüz gibi, temel süreç çok karmaşık değil. Daha önce söylediğim gibi, burada ele alınmasından çok daha fazlası var, bu yüzden devam edin ve daha derinlemesine açıklama için öğreticiyi okuyun .