Karena belum ada yang meliput pertanyaan OP ini:
Apa yang ingin saya lakukan:
Buat modul python dapat diinstal dengan "pip install ..."
Ini adalah contoh minimal absolut, menunjukkan langkah-langkah dasar mempersiapkan dan mengunggah paket Anda ke PyPI menggunakan setuptools
dan twine
.
Ini sama sekali bukan pengganti untuk membaca setidaknya tutorial , ada lebih dari itu tercakup dalam contoh yang sangat mendasar ini.
Membuat paket itu sendiri sudah tercakup oleh jawaban lain di sini, jadi mari kita asumsikan kita sudah membahas langkah itu dan struktur proyek kita seperti ini:
.
└── hellostackoverflow/
├── __init__.py
└── hellostackoverflow.py
Agar dapat digunakan setuptools
untuk kemasan, kita perlu menambahkan file setup.py
, ini masuk ke folder root dari proyek kami:
.
├── setup.py
└── hellostackoverflow/
├── __init__.py
└── hellostackoverflow.py
Minimal, kami menentukan metadata untuk paket kami, setup.py
akan terlihat seperti ini:
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'
)
Karena kami telah menetapkan license='MIT'
, kami menyertakan salinan dalam proyek kami sebagai LICENCE.txt
, di samping file readme di reStructuredText sebagai README.rst
:
.
├── LICENCE.txt
├── README.rst
├── setup.py
└── hellostackoverflow/
├── __init__.py
└── hellostackoverflow.py
Pada titik ini, kami siap untuk mulai menggunakan kemasan setuptools
, jika kami belum menginstalnya, kami dapat menginstalnya dengan pip
:
pip install setuptools
Untuk melakukan itu dan membuat source distribution
, di folder root proyek kami, kami memanggil kami setup.py
dari baris perintah, menentukan kami ingin sdist
:
python setup.py sdist
Ini akan membuat paket distribusi dan info telur kami, dan menghasilkan struktur folder seperti ini, dengan paket kami di dist
:
.
├── dist/
├── hellostackoverflow.egg-info/
├── LICENCE.txt
├── README.rst
├── setup.py
└── hellostackoverflow/
├── __init__.py
└── hellostackoverflow.py
Pada titik ini, kami memiliki paket yang dapat kami instal menggunakan pip
, jadi dari root proyek kami (dengan asumsi Anda memiliki semua penamaan seperti dalam contoh ini):
pip install ./dist/hellostackoverflow-0.0.1.tar.gz
Jika semuanya berjalan dengan baik, kita sekarang dapat membuka juru bahasa Python, saya akan mengatakan di suatu tempat di luar direktori proyek kami untuk menghindari kebingungan, dan mencoba menggunakan paket baru mengkilap kami:
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!'
Sekarang kami telah mengkonfirmasi paket menginstal dan berfungsi, kami dapat mengunggahnya ke PyPI.
Karena kami tidak ingin mencemari repositori langsung dengan eksperimen kami, kami membuat akun untuk repositori pengujian , dan menginstal twine
untuk proses unggah:
pip install twine
Sekarang kita hampir sampai, dengan akun kita dibuat, kita hanya mengatakan twine
untuk mengunggah paket kita, itu akan meminta kredensial kita dan mengunggah paket kita ke repositori yang ditentukan:
twine upload --repository-url https://test.pypi.org/legacy/ dist/*
Kami sekarang dapat masuk ke akun kami di repositori tes PyPI dan mengagumi paket kami yang baru diunggah untuk sementara waktu, dan kemudian mengambilnya menggunakan pip
:
pip install --index-url https://test.pypi.org/simple/ hellostackoverflow
Seperti yang bisa kita lihat, proses dasarnya tidak terlalu rumit. Seperti yang saya katakan sebelumnya, ada banyak lebih dari yang dibahas di sini, jadi silakan baca tutorial untuk penjelasan lebih mendalam.