Đối với các gói Python không có phần mở rộng nhị phân và các bản dựng khá đơn giản, có thể sử dụng hệ thống bản dựng hiện đại thay vì các công cụ thiết lập cổ điển nhưng dài dòng và
[build-system]
requires = ["flit_core>=3.3"]
build-backend = "flit_core.buildapi"
1. Cái bạn chọn không thực sự quan trọng lắm; . PyPA's Flit là một lựa chọn tuyệt vời. Trong tương lai, scikit-build và meson có thể hỗ trợ loại cấu hình này, cho phép các gói mở rộng nhị phân cũng được hưởng lợi. Các công cụ PEP 621 này hiện bao gồm Hatch, PDM, Flit, Trampolim, Whey và Setuptools. Thơ cuối cùng sẽ nhận được sự ủng hộ trong 2. 0Hầu hết các tệp nhị phân không được hỗ trợ trong các công cụ PEP 621 hiện có, mặc dù sắp có hỗ trợ tốt hơn
tập tin cổ điển
Các hệ thống này không sử dụng hoặc yêu cầu
1,[build-system] requires = ["flit_core>=3.3"] build-backend = "flit_core.buildapi"
3 hoặc[build-system] requires = ["flit_core>=3.3"] build-backend = "flit_core.buildapi"
4. Đó là những công cụ thiết lập. Tất nhiên, trừ khi bạn đang sử dụng công cụ thiết lập, công cụ này vẫn sử dụng[build-system] requires = ["flit_core>=3.3"] build-backend = "flit_core.buildapi"
4. Bạn có thể chuyển đổi các tệp cũ bằng cách sử dụng[build-system] requires = ["flit_core>=3.3"] build-backend = "flit_core.buildapi"
6 hoặc bằng ini2toml[build-system] requires = ["flit_core>=3.3"] build-backend = "flit_core.buildapi"
Lựa chọn phụ trợ
Các chương trình phụ trợ xử lý siêu dữ liệu theo cùng một cách, do đó, lựa chọn tùy thuộc vào cách bạn chỉ định tệp nào đi vào SDist và các tính năng bổ sung, chẳng hạn như lấy phiên bản từ VCS. Nếu bạn không có tùy chọn hiện tại, ấp nở là một lựa chọn tuyệt vời, cân bằng giữa tốc độ, khả năng cấu hình và khả năng mở rộng
pyproject. toml. xây dựng hệ thống
Các gói phải có tệp
[build-system]
requires = ["flit_core>=3.3"]
build-backend = "flit_core.buildapi"
7 chọn phần phụ trợHatching Flit PDM Setuptools
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[build-system]
requires = ["flit_core>=3.3"]
build-backend = "flit_core.buildapi"
[build-system]
requires = ["pdm-pep517"]
build-backend = "pdm.pep517.api"
[build-system]
requires = ["flit_core>=3.3"]
build-backend = "flit_core.buildapi"
0pyproject. toml. dự định
Siêu dữ liệu được chỉ định ở định dạng dựa trên tiêu chuẩn
[build-system]
requires = ["flit_core>=3.3"]
build-backend = "flit_core.buildapi"
1Bạn có thể đọc thêm về từng trường và tất cả các trường được phép trong phần đóng gói. con trăn. org, hoặc Whey. Lưu ý rằng “Trang chủ” là đặc biệt và thay thế cài đặt url cũ
cấu trúc gói
Tất cả các gói phải có một thư mục
[build-system]
requires = ["flit_core>=3.3"]
build-backend = "flit_core.buildapi"
8, với mã gói nằm bên trong thư mục đó, chẳng hạn như [build-system]
requires = ["flit_core>=3.3"]
build-backend = "flit_core.buildapi"
9. Điều này có vẻ rắc rối hơn; . Tuy nhiên, đây là một cách làm không tốt và nó gây ra một số lỗi phổ biến, chẳng hạn như chạy [build-system]
requires = ["pdm-pep517"]
build-backend = "pdm.pep517.api"
2 và nhận phiên bản cục bộ thay vì phiên bản đã cài đặt - điều này rõ ràng có xu hướng bị hỏng nếu bạn xây dựng các phần của thư viện hoặc nếu bạn truy cập siêu dữ liệu góiĐáng buồn là điều này không phải là một phần của siêu dữ liệu tiêu chuẩn trong
[build-system]
requires = ["pdm-pep517"]
build-backend = "pdm.pep517.api"
3, vì vậy nó phụ thuộc vào việc bạn sử dụng chương trình phụ trợ nào. Các công cụ Hatchling, Flit, PDM và setup sử dụng tính năng phát hiện tự động, trong khi Trampolim và váng sữa thì không, yêu cầu cài đặt [build-system]
requires = ["pdm-pep517"]
build-backend = "pdm.pep517.api"
4Nếu bạn không khớp tên gói và tên nhập [bạn nên chọn tên này trừ những trường hợp rất đặc biệt], bạn có thể sẽ cần cấu hình bổ sung tại đây
lập phiên bản
Bạn có thể chỉ định phiên bản theo cách thủ công [như minh họa trong ví dụ], nhưng các chương trình phụ trợ thường cung cấp một số tính năng tự động để giúp bạn tránh điều này. Flit sẽ lấy nội dung này từ một tệp nếu bạn yêu cầu. Hatchling và PDM có thể được hướng dẫn tìm trong tệp hoặc sử dụng git
Bạn sẽ luôn cần chỉ định rằng phiên bản sẽ được cung cấp động với
Sau đó, bạn sẽ định cấu hình chương trình phụ trợ của mình để tính toán phiên bản
Hatchling phiên bản năng độngBạn có thể nói với hatchling để lấy phiên bản từ VCS. Thêm
[build-system]
requires = ["pdm-pep517"]
build-backend = "pdm.pep517.api"
5 vào [build-system]
requires = ["pdm-pep517"]
build-backend = "pdm.pep517.api"
6 của bạn, sau đó thêm cấu hình sau[build-system]
requires = ["flit_core>=3.3"]
build-backend = "flit_core.buildapi"
1Hoặc bạn có thể yêu cầu nó tìm nó trong một tệp [xem tài liệu về regex tùy ý]
[build-system]
requires = ["flit_core>=3.3"]
build-backend = "flit_core.buildapi"
2[thay thế
[build-system]
requires = ["pdm-pep517"]
build-backend = "pdm.pep517.api"
7 bằng đường dẫn gói]Bạn cũng nên thêm hai tệp này
[build-system]
requires = ["pdm-pep517"]
build-backend = "pdm.pep517.api"
8[build-system]
requires = ["flit_core>=3.3"]
build-backend = "flit_core.buildapi"
5Và
[build-system]
requires = ["pdm-pep517"]
build-backend = "pdm.pep517.api"
9 [hoặc thêm dòng này nếu bạn đang sử dụng tệp này][build-system]
requires = ["flit_core>=3.3"]
build-backend = "flit_core.buildapi"
7Điều này sẽ cho phép kho lưu trữ git [bao gồm cả kho lưu trữ được tạo từ GitHub] cũng hỗ trợ lập phiên bản
Bao gồm/loại trừ các tệp trong SDist
Đây là công cụ cụ thể
- Theo mặc định, Hatchling sử dụng tệp bỏ qua VCS của bạn, vì vậy hãy đảm bảo tệp đó chính xác [dù sao đó cũng là một ý tưởng hay]
- Flit yêu cầu bao gồm/loại trừ thủ công trong nhiều trường hợp, chẳng hạn như sử dụng thư mục làm việc bẩn
- .
- Setuptools vẫn sử dụng
4[build-system] requires = ["flit_core>=3.3"] build-backend = "flit_core.buildapi"
Flit sẽ không sử dụng VCS [như git] để điền vào SDist nếu bạn sử dụng công cụ tiêu chuẩn, ngay cả khi Flit có thể làm điều đó bằng công cụ của chính nó. Vì vậy, hãy chắc chắn rằng bạn liệt kê các quy tắc bao gồm/loại trừ rõ ràng và kiểm tra nội dung
[build-system]
requires = ["flit_core>=3.3"]
build-backend = "flit_core.buildapi"
9Nên sử dụng các tính năng bổ sung thay thế hoặc ngoài việc tạo các tệp yêu cầu. Các tính năng bổ sung này a] tương tác chính xác với các yêu cầu cài đặt và các công cụ tích hợp khác, b] có sẵn trực tiếp khi cài đặt qua PyPI và c] được cho phép trong
[build-system]
requires = ["flit_core>=3.3"]
build-backend = "flit_core.buildapi"
01, [build-system]
requires = ["flit_core>=3.3"]
build-backend = "flit_core.buildapi"
02, [build-system]
requires = ["flit_core>=3.3"]
build-backend = "flit_core.buildapi"
7 và hầu hết các nơi khác yêu cầu được thông quaDưới đây là một ví dụ về một tính năng bổ sung đơn giản
[build-system]
requires = ["flit_core>=3.3"]
build-backend = "flit_core.buildapi"
0Tự phụ thuộc có thể được sử dụng bằng cách sử dụng tên của gói, chẳng hạn như
[build-system]
requires = ["flit_core>=3.3"]
build-backend = "flit_core.buildapi"
04, nhưng điều này yêu cầu Pip 21. 2 hoặc mới hơn. Chúng tôi khuyên bạn nên cung cấp ít nhất ________ 105, ________ 106 và _____ 107