ด้วยโครงสร้างแพ็คเกจดังต่อไปนี้
.
├── 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
แต่ตามผู้ดูแลของ setuptoolsการกำหนดค่าการสร้างที่เปิดเผยนั้นเหมาะและการใช้งานที่จำเป็นจะเป็นกลิ่นรหัส ดังนั้นเราจึงแทนที่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 โดยใช้ setuptoolsอย่างไร เครื่องมือที่ผู้ใช้สร้างขึ้นเพื่อสร้าง sdist คืออะไร ฉันไม่ต้องการเปลี่ยนการสร้างแบ็กเอนด์ ดูเหมือนว่าเครื่องมือบรรจุภัณฑ์อื่น ๆ ทั้งหมดเขียนจุดเริ่มต้นการสร้างของตัวเอง แต่ฉันคิดว่าจุดทั้งหมดของการกำหนดระบบการสร้างที่ประกาศในเมตาดาต้าคือเพื่อให้คุณไม่ต้องทำมือกับระบบการสร้าง เครื่องมือบรรจุภัณฑ์ที่แตกต่างกันคาดว่าจะถูกเรียกใช้หรือต้องเข้าไปในล่ามและเรียก Python API ด้วยตนเอง แต่ PEP สำหรับการสร้างความต้องการของระบบนั้นมีอายุมากกว่า 2 ปีแล้ว ฉันขาดอะไรบางอย่างชัดเจนที่นี่?
วิธีสร้างการกระจายแหล่งที่มาโดยไม่ใช้setup.py
ไฟล์
pep517.build
เฉพาะการทดลองซึ่งเป็นไม้ยันรักแร้ชั่วคราวเมื่อมีเครื่องมือที่ใช้ในการผลิตเช่น flit, poetry, hatch และอาจจะมากกว่านี้?