Dengan struktur paket berikut
.
├── my_package
│ └── __init__.py
├── setup.cfg
└── setup.py
Isi dari setup.py
from setuptools import setup
setup()
Isi dari setup.cfg
[metadata]
name = my_package
version = 0.1
[options]
packages = find:
Saya dapat membuat roda atau sumber distribusi untuk my_package
seperti ini
pip wheel --no-deps -w dist .
# generates file ./dist/my_package-0.1-py3-none-any.whl
python setup.py sdist
# generates file ./dist/my_package-0.1.tar.gz
Tetapi menurut pengelola setuptools , konfigurasi build deklaratif adalah ideal dan menggunakan build imperatif akan menjadi kode bau. Jadi kami ganti setup.py
dengan pyproject.toml
:
.
├── my_package
│ └── __init__.py
├── setup.cfg
└── pyproject.toml
Isi dari pyproject.toml
[build-system]
build-backend = "setuptools.build_meta"
requires = ["setuptools", "wheel"]
Dan Anda masih bisa membangun roda dengan cara yang sama seperti sebelumnya, itu berhasil. Tapi sdist tidak berfungsi:
python: can't open file 'setup.py': [Errno 2] No such file or directory
Jadi bagaimana Anda seharusnya membangun file .tar.gz menggunakan setuptools ? Apa alat yang dihadapi pengguna untuk membuat sdist? Saya tidak ingin mengubah backend build. Sepertinya alat pengemasan lainnya semuanya menulis titik masuk build mereka sendiri, tetapi saya pikir inti dari mendefinisikan sistem build deklaratif dalam metadata adalah agar Anda tidak perlu terlibat langsung dengan sistem build, mempelajari bagaimana masing-masing alat pengemasan yang berbeda diharapkan dipanggil atau harus masuk ke juru bahasa dan memanggil API Python secara manual. Tetapi PEP untuk persyaratan sistem bangunan sudah berusia lebih dari 2 tahun sekarang. Apakah saya melewatkan sesuatu yang jelas di sini?
Bagaimana cara membangun distribusi sumber tanpa menggunakan setup.py
file?
pep517.build
yang hanya dimaksudkan sebagai percobaan, penopang sementara ketika ada alat produktif seperti flit, puisi, palka, dan mungkin bahkan lebih?