निम्नलिखित पैकेज संरचना के साथ
.
├── my_package
│ └── __init__.py
├── setup.cfg
└── setup.py
की सामग्री setup.py
from setuptools import setup
setup()
की सामग्री setup.cfg
[metadata]
name = my_package
version = 0.1
[options]
packages = find:
मैं my_package
इस तरह के लिए पहिया या एक स्रोत वितरण का निर्माण कर सकता हूं
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
लेकिन सेटप्टूल के अनुरक्षक के अनुसार , एक घोषणात्मक बिल्ड कॉन्फ़िगरेशन आदर्श है और एक अनिवार्य बिल्ड का उपयोग करना एक कोड गंध होने वाला है। इसलिए हम इसके setup.py
साथ प्रतिस्थापित करते हैं pyproject.toml
:
.
├── my_package
│ └── __init__.py
├── setup.cfg
└── pyproject.toml
की सामग्री pyproject.toml
[build-system]
build-backend = "setuptools.build_meta"
requires = ["setuptools", "wheel"]
और आप अभी भी पहले की तरह एक पहिया बना सकते हैं, यह काम करता है। लेकिन sdist काम नहीं करता है:
python: can't open file 'setup.py': [Errno 2] No such file or directory
तो कैसे आप वास्तव में। सेट का उपयोग करते हुए .tar.gz फ़ाइल का निर्माण करना चाहिए ? Sdist बनाने के लिए उपयोगकर्ता का सामना करने वाला उपकरण क्या है? मैं बिल्ड बैकेंड को बदलना नहीं चाहता। ऐसा लगता है कि अन्य पैकेजिंग उपकरण सभी अपने स्वयं के बिल्ड एंट्री पॉइंट लिखते हैं, लेकिन मुझे लगा कि मेटाडेटा में डिक्लेरेटिव बिल्ड सिस्टम को परिभाषित करने का पूरा बिंदु ऐसा था कि आपको बिल्ड सिस्टम के साथ हाथ नहीं मिलाना था, यह सीखना कि प्रत्येक कैसे अलग-अलग पैकेजिंग टूल से यह पूछा जाता है कि वह दुभाषिया में जाए या मैन्युअल रूप से पायथन एपीआई को कॉल करे। लेकिन सिस्टम की आवश्यकताओं के लिए PEP अब 2 साल से अधिक पुराना है। क्या में यहां कुछ भूल रहा हूँ?
setup.py
फ़ाइल का उपयोग किए बिना स्रोत वितरण का निर्माण कैसे करें ?
pep517.build
जो केवल एक प्रयोग के रूप में होता है, एक अस्थायी बैसाखी जब उत्पादक उपकरण होते हैं जैसे कि फ्लिट, कविता, हैच, और शायद और भी?