Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Điều này thực sự được viết độc đáo; Kudos cho tác giả để biên soạn rất nhiều thông tin theo định dạng có thể đọc được.

Nếu tôi có thể được tha thứ một nitpick: Thơ không sử dụng cấu hình xây dựng theo kiểu PEP 518 [1] theo mặc định, điều đó có nghĩa là việc sử dụng `pyproject.toml` hơi mất tốc độ với phần còn lại của hệ sinh thái bao bì Python. Điều đó không có nghĩa là nó không xuất sắc, bởi vì nó là! Nhưng bạn các tiêu chuẩn đã đi một chặng đường dài và bây giờ bạn có thể sử dụng `pyproject.toml` với bất kỳ phụ trợ xây dựng nào miễn là bạn sử dụng siêu dữ liệu tiêu chuẩn.

Ví dụ, đây là một dự án hoàn toàn tương thích PEP 517 và PEP 518 mà không cần một setup.py hoặc setup.cfg [2]. Mọi thứ đi qua pyproject.toml.

[1]: https://peps.python.org/pep-0518/

[2]: https: //github.com/trailofbits/pip-audit/blob/main/pyproject ...

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

> Ví dụ, đây là một dự án hoàn toàn PEP 517 và PEP 518 tương thích mà không cần một setup.py hoặc setup.cfg [2]. Mọi thứ đi qua pyproject.toml.

Sử dụng pyproject.toml với pip / flit vẫn có nhiều cạnh thô như PIP không thể cài đặt DEPS cục bộ để phát triển hoặc không tạo các tệp khóa. Thơ là cách IMO trưởng thành hơn.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Có thể tôi đã hiểu sai ý bạn, nhưng cài đặt các phụ thuộc cục bộ để phát triển (có nghĩa là phát triển bổ sung) và tạo các tệp khóa (thông qua PEP Freeze) cả hai đều hoạt động cho tôi.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Nitpick của bạn được tha thứ! Cảm ơn rất nhiều vì thông tin này, tôi đã không biết về điều này ...

Tuy nhiên, tôi đã xem PEP 518 và không hiểu điều gì sai với cấu hình mặc định của thơ. Bạn có thể giúp tôi không?

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Nếu tôi có thể được tha thứ cho một nitpick khác về khả năng đọc:

Kích thước phông chữ cực kỳ nhỏ đến mức không thể đọc được trên điện thoại di động.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Tôi nghĩ kích thước phông chữ là hoàn hảo, nhưng tôi xúc phạm đến phông chữ được sử dụng cho các tiêu đề

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Tôi đã tìm kiếm một sự thay thế cho phông chữ đó trong một thời gian dài. Bạn có đề nghị nào không?

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Thật là một bài viết tuyệt vời.

Chúng tôi bắt đầu với việc học rằng chúng tôi hoàn toàn cần thứ thơ này bởi vì đó là những gì mọi người khác sử dụng. Thật sảng khoái khi thấy tác giả có thể bỏ qua những lời biện minh xấu thông thường và chỉ là quản trị viên đơn giản rằng anh ta không biết shit và chỉ là sau đó là phần còn lại của đàn. Sau đó, chúng tôi tiếp tục bằng cách "giải quyết" sự phụ thuộc bằng cách thông thường để bỏ qua chúng và chỉ đóng băng bất cứ điều gì xảy ra.

Sau đó, không thể tránh khỏi việc bắn Virtualenv, bởi vì đó chỉ là những gì bạn phải làm khi giao dịch với các phụ thuộc lộn xộn.

Tiếp theo là mới đối với tôi. Rõ ràng, người ta không chỉ thiết lập các móc Git ngày nay mà còn sử dụng công cụ riêng biệt với cấu hình khai báo. Bởi vì nếu bạn từng xảy ra với một cái gì đó không được bao phủ bởi công cụ, điều đó có nghĩa là bạn không còn là một phần của đàn.

Sau đó, chúng tôi đẩy công cụ của chúng tôi thẳng đến Pypi, vì tất nhiên, công cụ của chúng tôi không thể có bất kỳ sự phụ thuộc nào bên ngoài hệ sinh thái đàn Python. Dù sao thì chúng ta cũng không biết sự phụ thuộc của chúng ta.

Sau đó đến phần thú vị, kéo vào Tox, bởi vì khi bạn có công cụ đặc biệt để xử lý các phụ thuộc, những gì bạn chỉ cần là một công cụ khác với mô hình môi trường và phụ thuộc khác nhau.

Phần chất lượng mã tôi sẽ chỉ bỏ qua, xem những gì vượt qua chất lượng mã ngày nay khiến tôi quá buồn. Những gì sau đây là thiết lập một số dự án độc quyền mà hiện đại mở ra dường như không thể tồn tại mà không có. Những gì nhiều hơn là "TYDING UP" bằng cách chuyển mã từ root git sang subdir. Bây giờ, điều này tất nhiên là điều hoàn toàn hợp lý, nhưng tôi tự hỏi tại sao nó được gọi là 'SRC'? Có lẽ một số memeber đàn thấy đã thấy ngôn ngữ được biên dịch ở đâu đó và chọn nó mà không hiểu sự khác biệt giữa mã nhị phân và mã nguồn được biên dịch?

Bây giờ đừng lấy điều này như thể tôi có vấn đề với nội dung bài viết. Không, như một mồi cho bao bì Python hiện đại, thật tuyệt vời. Đó không phải là lỗi của tác giả rằng công việc của ông là toàn diện, nó đưa ra tất cả các đặc điểm riêng, tâm lý bầy đàn, chủ nghĩa Cargocult và sự lười biếng nói chung của hệ sinh thái Python ngày nay. Hoặc là nó?

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

> Thơ thứ vì…

PIP Freeze không ghim phụ thuộc chuyển tiếp và vì vậy bạn phải chọn một cái gì đó và thơ là tốt và tích cực phát triển.

> VirtualEnv, bởi vì đó chỉ là những gì bạn phải làm khi xử lý các phụ thuộc lộn xộn

Không, đó là những gì bạn làm khi bạn có nhiều cây phụ thuộc cho các dự án khác nhau trên hệ thống của bạn. Bằng cách nào đó, mọi người đã nhận được thông điệp rằng các biến toàn cầu là xấu nhưng vẫn nghĩ rằng "ngẫu nhiên nhảm nhí trên hệ thống cụ thể của tôi" là một cách tuyệt vời để tạo ra phần mềm hoạt động trên máy của người khác.

> Bởi vì nếu bạn đã từng xảy ra với một cái gì đó không được bao phủ bởi công cụ

Bạn viết móc của riêng bạn vì nó hoàn toàn dựa trên plugin.

> Tox, bởi vì khi bạn có công cụ đặc biệt để xử lý các phụ thuộc, những gì bạn chỉ cần

Một công cụ không gây ô nhiễm môi trường phát triển của bạn với các gói thử nghiệm và không chạy thử nghiệm của bạn trong môi trường phát triển của bạn, vệ sinh rằng trước khi công cụ này về cơ bản không ai bận tâm làm vì nó tẻ nhạt.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

> PIP FREEZE không ghim phụ thuộc chuyển tiếp

Afaik nó liệt kê tất cả các gói đã cài đặt và do đó ghim tất cả các phụ thuộc.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Có, thật không may, tất cả các phụ thuộc đều bị đóng băng ở cùng cấp độ, vì vậy thật khó để phân biệt giữa những phụ thuộc thực tế của bạn và sự phụ thuộc phụ, và phụ thuộc phụ.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Jeez, tôi đã lướt qua bài báo, và thấy những gì tôi cho rằng là một loại mồi toàn diện nhưng cơ bản trên bao bì hiện đại, như bạn nói. Nhưng tôi cũng suy luận rằng tác giả có lẽ là một lập trình viên mới hơn, chỉ có một vài năm kinh nghiệm. Anh ấy học về các công cụ và thực tiễn tốt nhất bằng ngôn ngữ dễ tiếp cận và vui chơi chia sẻ kiến ​​thức thông qua blog của mình.

Tình cảm đằng sau những bình luận của bạn được chia sẻ, nhưng tôi không thấy cần phải nói mỉa mai về nó và điều khiển tất cả các đề xuất mà OP đưa ra.

Nếu có bất cứ điều gì, tôi ngạc nhiên khi có người có nhiều kinh nghiệm hơn không thấy bài viết về nó là gì và tấn công bài viết của ai đó như thế này chỉ cho thấy sự non nớt khi bạn có thể dễ dàng đưa ra những ý kiến ​​đó và hình thành một lập luận mang tính xây dựng hoặc đưa ra lời khuyên tốt.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Tôi cũng có phản ứng tương tự. Không có nhiều giải thích, không có lý do nào cho các quyết định công cụ, đẩy mã không có giấy tờ hơn đến PYPI bởi vì tại sao không, "Tôi thấy gói này làm điều này", v.v.

Tôi đoán thật tuyệt nếu bạn chỉ đang tìm kiếm một lối tắt để đẩy một cái gì đó lên PYPI, nhưng tôi đoán là một người mới đối với nó sẽ không thực sự hiểu những gì đang diễn ra ngoài một ý nghĩa mơ hồ mà họ đang tuân theo "các thực tiễn tốt nhất" .

Và sau đó tôi tưởng tượng rằng cùng một người sẽ tiếp tục viết một bài viết khác như thế này, và trên và trên chúng ta đi!

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Sau đó, hãy viết bài viết quan điểm của riêng bạn trên blog của bạn. Đối với bản thân tôi, tôi đã suy nghĩ về việc cố gắng phát triển một gói và điều này cho tôi một điểm khởi đầu tốt đẹp để làm như vậy ngay cả khi tôi không sử dụng tất cả các công cụ tương tự để làm điều đó.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Điều trớ trêu ở đây là bao bì Python đã bị hút mãi mãi, và đây chỉ là một ví dụ khác về nó. "Làm nhiều hơn với ít hơn" chưa bao giờ bước vào tâm trí các nhà phát triển Python trung bình.

Bạn sẽ nghĩ rằng tâm lý bầy đàn có thể giúp nó nhưng nó chỉ tạo ra nhiều giải pháp đóng gói hơn.

Ngày nay, tôi đã ngừng sử dụng Python bên ngoài các kịch bản nhỏ và tôi sẽ không bao giờ chạm vào nó cho một dự án lớn.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Vấn đề với Python là nó quá thành công. Nó có quá nhiều thư viện hữu ích. Tôi không thực sự thích nó lắm nhưng thật khó để bỏ qua nó.

Có chính xác một điều tôi nhớ từ các công cụ đóng gói Python: Chế độ nhà phát triển. Tôi có thể đưa ra các phần của ứng dụng vào thư viện và phát triển cả hai cùng một lúc bằng cách cài đặt thư viện ở chế độ có thể chỉnh sửa và chỉ vào thư mục cục bộ của thư viện. Đây là điều tôi luôn muốn nhưng chưa bao giờ có trong mọi ngôn ngữ khác mà tôi biết. Chỉ có Chúa mới biết tôi đã dành bao nhiêu thời gian để cố gắng làm chính xác điều này với các mô hình con git.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Tốt để biết. Chưa bao giờ tự mình thử Julia nhưng tôi thấy rất nhiều bài viết của Julia ở đây. Tôi cũng biết rằng nó có giao diện nước ngoài thực sự thú vị với Python, chưa bao giờ thấy bất cứ điều gì như vậy trước đây.

> Có lẽ bởi vì nó đã phát triển như một phần cốt lõi của ngôn ngữ.

Luôn luôn nghĩ rằng thật kỳ lạ khi các thư viện và bao bì dường như không bao giờ được coi là một phần của ngôn ngữ. Ví dụ yêu thích của tôi là sơ đồ: một ngôn ngữ tối thiểu đẹp nhưng không có hỗ trợ thư viện và kết quả là sự phân mảnh vô tận do các triển khai không thể thực hiện được.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Tôi không chắc mình hiểu điều này. Bạn có nghĩa là có một phiên bản ứng dụng sử dụng mã thư viện từ git cục bộ thay vì gói PIP? Tôi làm điều đó mọi lúc với một makefile và một số liên kết symlink.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Ừ. PIP đã có tính năng đó được tích hợp. Tôi đã hack các giải pháp một phần cho một số ngôn ngữ khác nhưng chúng không liền mạch. Đối với C, tôi đã thử các mô hình con git nhưng nó không thực sự được thiết kế cho điều đó.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Tôi ước mọi người sẽ quên đi trước cam kết, điều này đặc biệt vô dụng trong một khung cảnh mà một đường ống CI/CD tồn tại. Không khó để viết một makefile hoặc shellscript đơn giản để chạy linters khi đẩy.

Pre-commit là một trong những công cụ khó chịu nhất đã ra đời trong những năm gần đây mà mọi người dường như là người lái xe chở hàng. Nó không chơi tốt với các biên tập viên vì để tìm đường dẫn nhị phân thực tế, bạn phải mở một cơ sở dữ liệu SQLite để đánh bắt tiền cam kết VirtualENV được tạo. Trước khi cam kết cũng làm tăng gánh nặng bảo trì, vì cấu hình của nó hoàn toàn tách biệt với các yêu cầu thông thường của bạn-dev.txt/pyproject.toml/setup.cfg, v.v. -Commit tạo ra các nhị phân rất khó, bây giờ bạn phải giữ cả hai phiên bản đồng bộ.

Tôi thực sự không thấy điểm của bất kỳ móc tiền trước nào trừ khi bạn là một chàng trai không sử dụng nền tảng CI/CD hiện đại.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Tiền cam kết là tùy chọn, bạn không thể cài đặt chúng vào .git/ ... mặc dù tôi thực sự thích ngay trước khi đẩy, hoặc chỉ đưa ra cảnh báo hiển thị

Một điều thực sự gây phiền nhiễu trong những ngày này là CI/CD không thể được nhân rộng tại địa phương, tạo ra sự chậm trễ khá khó chịu trong quá trình phát triển. Jenkins có vẻ đặc biệt có vấn đề về vấn đề này: Các bước được mã hóa trong một số máy chủ PET Jenkins khó hiểu, và sau đó bạn phải đợi vài phút cho đến khi một tác nhân nhận nó và đạt đến bước bạn thực sự quan tâm. Các công cụ khác nhanh hơn một chút, nhưng vẫn ...

Vì vậy, tôi nghĩ rằng ít nhất các móc giao tiền trước giúp với "sự phụ thuộc quá mức" này trên máy chủ CI/CD. Đó là DX tốt hơn rất nhiều khi bạn có thể chạy các phần của đường ống ngay lập tức.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

> Một điều thực sự khó chịu những ngày này là CI/CD không thể nhân rộng cục bộ

Trình cam kết trước chỉ chạy linter, định dạng và kiểm tra của bạn. Chắc chắn bạn hoàn toàn có thể sao chép bước này tại địa phương. Chỉ cần chạy làm cho Lint cả tại địa phương và trên CI.

Bất cứ điều gì khác khó để sao chép đều liên quan đến các hệ thống phân tán mà bạn có thể đang làm việc vì các hệ thống này có thể là những thứ độc quyền sống trên đám mây.

> Mặc dù tôi thực sự thích ngay trước khi đẩy, hoặc chỉ đưa ra cảnh báo hiển thị

Hết lòng đồng ý. Đây là một sự thỏa hiệp mà tôi có thể sống với.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Quan điểm của tôi là sử dụng các công cụ này ít nhất khiến mọi người đặt các tập lệnh này vào repo thay vì chỉ trong máy chủ CI.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Không có "thay vì" để nói. Hoặc là bạn chạy cùng một bước Lining cả cục bộ và trên CI hoặc chỉ trên CI, bạn không thể bỏ qua Lining trên CI. Mỗi đường ống CI được thiết lập đúng cách đều có một số kết hợp của Makefile/Shell Script/Dockerfile chạy chính xác theo cùng một cách cục bộ và trên CI, mà tập lệnh đã kiểm tra vào chính repo. Nếu các tập lệnh CI của bạn không tồn tại trong repo của bạn, bạn đang làm sai.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Đường ống CI của chúng tôi gọi tiền cam kết. Bằng cách đó, thật tầm thường khi chạy các công cụ chính xác giống như địa phương như sẽ được chạy trong CI.

Chạy các công cụ cục bộ về cơ bản là về việc thắt chặt vòng phát triển. Nhiều công cụ thường được sử dụng (ví dụ: màu đen, isort, v.v.) thực sự thực hiện các thay đổi cho các tệp để bạn thậm chí không bao giờ thực hiện các phiên bản thất bại. Bạn có thực sự muốn thúc đẩy các thay đổi sang một số hệ thống CI từ xa chỉ để nói rằng nó đã thất bại một số kiểm tra QA nhàm chán? Không có gì ngăn cản bạn làm điều đó. Trước khi cam kết là hoàn toàn tùy chọn cho mỗi nhà phát triển. Tôi chỉ giới thiệu nó vì lý do tỉnh táo.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

> Bạn có thực sự muốn thúc đẩy các thay đổi đối với một số hệ thống CI từ xa chỉ để nói rằng nó đã thất bại một số kiểm tra QA nhàm chán không?

Vâng, đó là những gì CI/CD dành cho.

> Tiền cam kết là hoàn toàn tùy chọn cho mỗi nhà phát triển.

Không, nó không phải là, nó được cài đặt tại Git Pre-Commit Hook của bạn và nó sẽ được chạy mỗi lần tôi cam kết, ngay cả khi tôi đã thiết lập trình chỉnh sửa của mình một cách chính xác để định dạng tự động và xơ cho mọi thứ tôi phát triển, có nghĩa là 99,999% của Thời gian chắc chắn rằng mã tôi cam kết sẽ vượt qua tất cả các kiểm tra linter này. Tôi có thể sử dụng Git cam kết-Không phải là người bỏ qua tiền cam kết, nhưng sau đó, một lần nữa, điểm sử dụng tiền cam kết ở nơi đầu tiên là gì nếu bạn cần bỏ qua nó? Hoàn toàn không có điểm nào của việc xếp hai lần tại địa phương và ba lần chỉ để đạt đến giai đoạn đầu tiên của việc triển khai của bạn.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

  rm ./.git/hooks/pre-commit
hoặc không cài đặt móc ở nơi đầu tiên. Lựa chọn vẫn là nhà phát triển trừ khi nhóm của bạn đang làm việc khác ở đây, điều này hạn chế khả năng xóa/đổi tên các tệp cục bộ của bạn.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Điều đó không làm giảm bớt vấn đề với khó khăn khi trình soạn thảo của bạn sử dụng phiên bản và cài đặt chính xác cho các linters và định dạng. Cách tiếp cận này cũng không giải quyết vấn đề có 2 bộ cấu hình riêng biệt khi bạn đang thử địa chỉ vấn đề số 1 ở trên.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

> Vâng, đó là những gì CI/CD dành cho.

Không thực sự. CI/CD là một phương pháp trong đó một nhóm ngay lập tức tích hợp các thay đổi mới vào trung kế/phát hành. Đường ống CI/CD có mặt để cung cấp cho nhóm sự tự tin để hợp nhất công cụ của bạn. Khi tôi thấy mọi người liên tục đẩy mã phá vỡ vào một đường ống CI, tôi thấy một lượng thời gian lãng phí đáng kinh ngạc và tài nguyên điện toán được chia sẻ. Đặc biệt nếu đó là một số kiểm tra định dạng tầm thường mà bạn nên thực hiện tại địa phương. Bạn làm những gì phù hợp với bạn, nhưng các công cụ như tiền cam kết được phát minh để tiết kiệm thời gian và công sức và chúng hoạt động tốt.

> Tôi đã thiết lập trình chỉnh sửa của mình một cách chính xác thành định dạng tự động và xơ cho mọi thứ tôi phát triển, có nghĩa là 99,9999% thời gian chắc chắn rằng mã tôi cam kết sẽ vượt qua tất cả các kiểm tra linter này.

Vậy thì vấn đề là gì? Đội của bạn đã cài đặt các móc mà mất nhiều thời gian để chạy chưa? Ngay cả trên các cơ sở mã lớn hơn trước khi cam kết cũng thêm một lượng thời gian không đáng kể cho mỗi cam kết, trừ khi có lẽ bạn đã chạm vào mọi tệp trong cơ sở mã hoặc một cái gì đó. Thành thật mà nói, sự kìm kẹp của bạn với tiền cam kết dường như chủ yếu là phi lý.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

> Đường ống CI/CD có mặt để cung cấp cho nhóm sự tự tin để hợp nhất công cụ của bạn.

Đó là lý do tại sao Lining là một phần của mọi giai đoạn CI. Linters Kiểm tra mã của bạn cho lỗi.

> Có nhóm của bạn đã cài đặt móc mà mất nhiều thời gian để chạy không?

Vâng, chúng được gọi là bài kiểm tra.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Đợi đã, bạn không nên chạy các bài kiểm tra với cam kết trước. Tôi có thể thấy lý do tại sao điều đó sẽ là bực bội. Nếu đó là trường hợp, nhóm của bạn đang làm sai.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Có lẽ, nhưng đó không chỉ là một nhóm, và nếu bạn đang thực hiện kiểm tra chất lượng mã trên CI, tôi không thấy điểm của cam kết trước (đối với hầu hết mọi người).

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

1. Bởi vì nó đánh bại mục đích của cam kết trước.

2. Cài đặt trước cam kết Cài đặt móc theo mặc định.

3. Nếu bạn tình cờ thất bại trong một vài lần một năm, luôn có một đồng nghiệp hậu môn nói với sếp của bạn trong 1 trên 1, bạn không làm theo một số cách làm việc của BS.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

> 1. Bởi vì nó đánh bại mục đích của cam kết trước.

Không, nó không. Truyền trước chỉ là một phần thưởng DX vì vậy bạn sẽ không phải chờ máy chủ CI/CD.

2. Cài đặt trước cam kết Cài đặt móc theo mặc định.

3. Nếu bạn tình cờ thất bại trong một vài lần một năm, luôn có một đồng nghiệp hậu môn nói với sếp của bạn trong 1 trên 1, bạn không làm theo một số cách làm việc của BS.

3. Nếu bạn tình cờ thất bại trong một vài lần một năm, luôn có một đồng nghiệp hậu môn nói với sếp của bạn trong 1 trên 1, bạn không làm theo một số cách làm việc của BS.

> 1. Bởi vì nó đánh bại mục đích của cam kết trước.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Không, nó không. Truyền trước chỉ là một phần thưởng DX vì vậy bạn sẽ không phải chờ máy chủ CI/CD.

Tui bỏ lỡ điều gì vậy? Nếu bạn chạy "$ pre-commit cài đặt", tất nhiên nó sẽ cài đặt các móc. Bạn có nghĩa là cài đặt thơ, setup.py đang tạo ra sự kỳ diệu của việc tự cài đặt các móc? Nếu vậy, đó thực sự là một thực hành tồi.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Tôi không hiểu tại sao bất cứ ai cũng quan tâm, trừ khi bạn làm ô nhiễm lịch sử CI/CD với hàng tấn cam kết nhỏ cả ngày chỉ để chạy lin.

Đổ đầy đường ống CI/CD bằng các cam kết nhỏ để sửa lỗi khi nó nên được thực hiện trước khi cam kết hoặc đẩy là lý do tại sao tiền cam kết tồn tại. Đó không phải là BS, làm tắc nghẽn hàng đợi công việc trong những người khác.

Tất nhiên tôi không biết bối cảnh cụ thể của GPS để họ có thể có các chi tiết khác, nhưng nói chung đó là

Ngoại trừ vấn đề này hiếm khi xuất hiện. Mọi người đều có cách yêu thích của họ để thiết lập các biên tập viên của họ thành Lint và định dạng tự động bằng cách sử dụng cấu hình của dự án.

Trong sự nghiệp của tôi, tôi thấy rằng mọi công ty đều có một số phiên bản của:

1. New Guy tham gia một đội, muốn đẩy mã càng sớm càng tốt

2. Anh ấy thiết lập biên tập viên yêu thích của mình và punt cấu hình linters và định dạng

3. Mã được đẩy, CI thất bại trong việc lót

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

4. Một số đồng nghiệp có ý nghĩa tốt hoặc anh chàng mới gợi ý một số biến thể của các tập lệnh Husky/Pre-Commit/Fancy Git Hook

5. Nhóm đồng ý và đưa nó vào repo

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

6. 6 tháng đến 1 năm sau, toàn bộ nhóm nhận ra lợi ích của mình không vượt qua chi phí, và nhất trí đồng ý loại bỏ nó một cách kỳ lạ.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Vâng, tôi có những trải nghiệm khác nhau, nơi không ai có thể quay lại sống mà không có cam kết trước, đen, tự động, v.v ... Nó chuyển các sửa chữa đến trước khi họ đến CI. Thực sự không có nhược điểm.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Có lẽ bạn có kinh nghiệm với một số công cụ kỳ lạ? Hoặc chạy màu đen và ô tô lộn xộn xung quanh với Emacs và nó cần tải lại tất cả các bộ đệm?

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

OK thì tôi nghĩ vấn đề này không phải là quá nhiều trước khi cam kết nhưng công cụ Python nói chung không nên được viết bằng Python. Đó là một ý kiến ​​thiểu số nhưng thực tế là có một Python và một con trăn ứng dụng có thể gây rối với những thứ bạn đang trải qua.

Vâng tôi đồng ý. Chỉ là họ chỉ có thể chạy tiền thủ công theo cách thủ công nếu các móc làm phiền chúng nhiều như vậy

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Tò mò, làm thế nào để sử dụng Emacs ảnh hưởng đến việc quy trình làm việc đến mức trước khi cam kết quá khó chịu?

Bạn đang sử dụng Git Inside Emacs hay từ dòng lệnh? Có vẻ như GP đang làm mọi thứ trong EMACS và độ phân giải Python ứng dụng đang vấp phải công cụ Python.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Nếu bạn có tất cả được sắp xếp từ Emacs có thể kiểm tra repo mà họ đã đăng cố gắng làm tất cả điều này.

Có vấn đề gì nếu nó chạy hai lần? Thông thường nó rất nhanh, bạn thậm chí không nhận thấy nó.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Nếu cam kết trước của bạn mất hơn 3 giây để chạy, thì nó đã thiết lập IMO không chính xác và thay vào đó, phải thuộc về bộ thử nghiệm được gọi bằng tay hơn (và CI).

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Các công cụ chạy trước cam kết trong môi trường ảo của riêng nó là một tính năng, không phải là một lỗi, trong cuốn sách của tôi-điều đó có nghĩa là các phụ thuộc cho các công cụ linter của tôi không được trộn lẫn với các phụ thuộc cho mã tôi đang viết.

Bạn cũng không cần phải chạy móc vào thời điểm tiền cam kết. Chỉ cần không kết nối trước khi cam kết vào thanh toán của bạn. Công cụ tiền cam kết cũng có thể được cấu hình để chạy kiểm tra của mình ở một giai đoạn khác với giai đoạn trước, giai đoạn tiền cam kết:

https://pre-commit.com/#top_level-default_stages

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Bạn có hướng dẫn nào để thiết lập CI/CD không? Ấn tượng của tôi là tất cả những thứ chạy trên đám mây nhưng nếu đó là thứ tôi có thể sử dụng cho các dự án cá nhân của riêng tôi, tôi sẽ chơi với nó. Thành thật mà nói, rất nhiều điều này trở nên không thể hiểu được. Tôi đã sử dụng tiền cam kết cho những thứ như Black và Autopep8 và điều đó khá dễ hiểu đối với tôi. Những điều CI/CD mà tôi đã đọc có vẻ như mọi người đã hiểu một số điều kiện Rube Goldberg khổng lồ mà họ đang theo dõi mọi thứ vì một số lý do có lẽ quan trọng đối với các đội Dev khổng lồ.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Không nhất thiết, nó chỉ phụ thuộc vào cách bạn đầu tư vào đường ống CI/CD cho bất kỳ dự án nào, sở thích của bạn về tự lưu trữ so với đám mây và lượng thời gian bạn phải dành cho chủ đề.

Nói đúng ra, bất kỳ công cụ hoặc bộ công cụ nào cho phép bạn kích hoạt việc xây dựng và triển khai/xuất bản các tạo tác để đáp ứng với các cam kết kiểm soát nguồn có thể được sử dụng để xây dựng đường ống CI/CD. Người ta có thể viết các tập lệnh bash được liên kết với một công việc cron kéo một kho lưu trữ từ xa mỗi n phút và sau đó thực hiện một số hành động có kịch bản để tích hợp các thay đổi giữa các nhánh trước khi xây dựng và xuất bản tạo tác lên máy chủ SFTP cục bộ.

Tuy nhiên, nếu bạn thích một giải pháp trưởng thành hơn với tài liệu tốt hơn, thì có một danh sách (không thể giải quyết) các công cụ CI/CD trong danh sách Devops tuyệt vời này:

https://github.com/wmariuss/awesome-devops#continuous-integr...

---

Chỉnh sửa: Tôi đã thấy Gitlab trong danh sách và nhận ra nó có lẽ là bản thân gần nhất tương đương với tùy chọn GitHub mà tôi đã đề cập trước đây

https://about.gitlab.com/features/continuous-integration/

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Thật thuận tiện khi chạy bước xơ cứng nhanh hơn/sớm hơn so với thời gian CI/CD. Tùy thuộc vào thiết lập của bạn, các DEP Linter riêng biệt được xử lý trước có thể thuận tiện hơn so với rắc rối cả tại địa phương và trong đường ống CI/CD của bạn (lại là tập lệnh Makefile mà bạn đề cập).

Đã thực hiện nó theo cả hai cách nhiều lần tôi có được trước khi cam kết trước

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Trước khi cam kết cũng có thể được cấu hình để sử dụng các phụ thuộc của dự án, đó là những gì tôi làm với các repos của mình khi có sự chồng chéo. Bạn không phải sử dụng tích hợp tích hợp của nó. Thật vậy, tôi thấy các tích hợp của nó hữu ích nhất cho các công cụ không dành riêng cho dự án của tôi: những thứ như kiểm tra không gian trắng, kiểm tra YAML, v.v.

Bạn cũng có thể thiết lập mọi thứ theo cách khác, cài đặt hệ thống CI/CD và chạy kiểm tra trước khi cam kết dưới dạng bước xây dựng. Pre-commit cung cấp một khung đẹp, tôi tìm thấy, để chạy các kiểm tra này.

Ưu điểm của tiền cam kết là nó bắt những sai lầm trước khi chúng cam kết. Hầu hết các hệ thống CI/CD được thiết lập để chỉ xác nhận đầu của nhánh (nghĩa là cam kết cuối cùng trong PR), không phải tất cả các cam kết trên đường đi. Có, bạn có thể định cấu hình hệ thống CI/CD để kiểm tra từng cam kết, nhưng thường bơi ngược dòng để làm như vậy. Và vâng, bạn có thể ép tất cả các cam kết PR vào một cam kết duy nhất, nhưng có những lý do chính đáng để không làm điều đó. Vì vậy, giả sử bạn có nhiều cam kết trong một thay đổi, thật tuyệt khi biết rằng họ có thể đã được xác nhận trong một dự án sử dụng trước khi cam kết.

Tôi sẽ kháng cáo thẩm quyền ở đây:

Tôi đã là một nhà phát triển chuyên nghiệp trong nhiều thập kỷ. Tôi đã làm việc với nhiều hệ thống xây dựng và của VCS. Tôi đã viết rất nhiều đồ ăn. Tuy nhiên, tôi vẫn thấy tiền cam kết hữu ích. Tôi sử dụng nó ngay cả khi kết hợp với một makefile đôi khi. Tôi đoán là bạn sẽ biết một số công cụ tạo ra của tôi có một quy tắc chạy `tiền cam kết-tất cả`.

Ví dụ, vào đầu tuần này, tôi đã thiết lập một repo mới xây dựng các gói AWS Lambda được viết bằng JavaScript và triển khai nó bằng cách sử dụng AWS "SAM" CLI thông qua hệ thống CI/CD. Vì vậy, mã được triển khai là JavaScript. REPO chứa các chữ ký shell để hỗ trợ triển khai. Và có nhiều tập tin YAML. Có một tệp YAML để định cấu hình hệ thống CI/CD và có các tệp mẫu CloudFormation.

Đây là những gì tôi đã cấu hình trước cam kết để làm:

1. Kiểm tra Nits Whitespace.

2. Kiểm tra lỗi cú pháp trong các tệp YAML.

3. Xác thực các mẫu cloudformation.

https://aws.amazon.com/blogs/infrastructure-and-automation/u...

4. Chạy shellcheck trên các tập lệnh shell.

5. Chạy ESLINT và PREPTIFIER chống lại JavaScript.

6. Chạy "Kiểm tra NPM" như một bước cục bộ.

Thông thường tôi sẽ rời khỏi (6) vì trong hầu hết các dự án, nó quá tốn thời gian, nhưng trong dự án này, các thử nghiệm chạy đủ nhanh để tôi chỉ làm cho nó một kiểm tra trước khi cam kết. Bước "Kiểm tra NPM" chạy jest, được cài đặt dưới dạng phụ thuộc dev trong gói của dự án.json. Các công cụ khác đều được cài đặt bởi chính cam kết trước.

> Tôi thực sự không thấy điểm của bất kỳ móc tiền trước nào trừ khi bạn là một chàng trai không sử dụng nền tảng CI/CD hiện đại.

Tôi đã cố gắng đưa ra một đối số cho lý do tại sao sử dụng trước cam kết ở trên. Tuy nhiên, bạn không cần phải cài đặt các móc của cam kết trước trong thanh toán của bạn. Họ lý ​​tưởng ở đó để giúp bạn tiết kiệm thời gian phải sửa lỗi sau khi thực tế. Có vẻ như có một sự không phù hợp trở kháng giữa quy trình công việc cá nhân của bạn và cách bạn đã thấy trước khi cam kết được thiết lập. Có lẽ bằng cách giải quyết sự không phù hợp đó bằng cách điều chỉnh cấu hình trước cam kết, bạn có thể tận hưởng các lợi ích trước khi cam kết với việc gặp phải các vấn đề bạn gặp phải.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Là một nhà phát triển khác với nhiều thập kỷ kinh nghiệm, tôi đã phải hỏi, tại sao bạn lại "xác nhận" mọi cam kết trong LOL PR. Lý do mỗi đường ống CI được thiết lập để chỉ xác nhận Mẹo là vì những thay đổi kết hợp của bạn sắp được hợp nhất là tất cả những gì quan trọng. Không ai quan tâm nếu bạn có một nhánh thử nghiệm đầy đủ các cam kết thất bại và các bài kiểm tra miễn là PR không.

Tuy nhiên, theo kinh nghiệm của tôi, tôi đã thấy rất nhiều thiết lập đường ống để chạy Lint trên mỗi lần đẩy trên một nhánh PR, điều này thực sự chỉ kiểm tra các thay đổi đi trước khi hợp nhất, chỉ trong trường hợp này, nó hợp nhất với nhánh tính năng của bạn. Quan điểm của tôi vẫn đứng - miễn là Linting được thực hiện trên CI và bạn đã thiết lập trình chỉnh sửa của mình thành Lint khi bạn chỉnh sửa, bạn không cần cam kết trước.

Tôi không hoàn toàn chắc chắn rằng bạn đang cố gắng thực hiện điểm nào. Có vẻ như tất cả những gì bạn đã thực hiện là tất cả các công cụ bạn gọi dù sao đi nữa từ một tệp makefile sang tệp yaml.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Này, đó là vấn đề của tôi :-)

Cảm ơn bạn đã liên kết nó! Có, đây sẽ là một chiến thắng bảo mật và tiện lợi lớn cho số lượng lớn các gói sử dụng GitHub để phát hành các phiên bản mới.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Rất nhiều thông tin tốt và được lưu đi!

Tuy nhiên, nó uống bảo hiểm mã Cool-Aid bắt đầu như 30 năm trước khi các công cụ bảo hiểm mã xuất hiện.

Các loại quản lý cho biết "Bảo hiểm mã kiểm tra cao == Chất lượng cao"; Cho phép đậu đó !!

Một cách tuyệt vời để đạt được phạm vi bảo hiểm mã cao là có mã số mạnh hơn không kiểm tra các trường hợp lỗi điên rồ thực sự khó sao chép trong các trường hợp thử nghiệm.

Bảo hiểm mã là một công cụ giúp các kỹ sư viết các bài kiểm tra tốt. Một người dành thời gian để xem xét kết quả và cải thiện bài kiểm tra. Đó là một khoản đầu tư kém để bị ám ảnh bởi bảo hiểm mã trên các đường dẫn mà chi phí để kiểm tra chúng vượt quá giá trị.

Bảo hiểm 10% và 100% là cả chuông báo thức. Đừng cho rằng các số liệu ngây thơ, dễ sản xuất giống như mã chất lượng.

Nếu không, và bài viết tuyệt vời.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Python là ngôn ngữ có một trong những tỷ lệ 100%-avover-ave-ave. Khung Unittest.Mock được bao gồm làm cho nó khá dễ dàng để kích hoạt các lỗi tối nghĩa và đảm bảo chúng được xử lý đúng cách.

Kết hợp với việc sử dụng chu đáo `# pragma: Không có bảo hiểm mã 98% hiện nay là một cảnh báo ngay lập tức rằng một cái gì đó đã được đưa ra. Với điều này và kiểm tra loại, tôi cảm thấy RunTimeErors dễ dàng hơn nhiều để tránh những ngày này.

Và gõ, thậm chí không được đề cập ?! :) Nhưng nếu không thì là một bài viết tuyệt vời, cảm ơn bạn!

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Vấn đề với việc sử dụng giả rộng rãi để thử nghiệm là sau đó bạn cuối cùng đã thử nghiệm chủ yếu là giả. Bạn sẽ biết bạn đã đạt được điểm đó khi bạn có phạm vi bảo hiểm 100%, nhưng mọi thứ vẫn bị phá vỡ thường xuyên do sự tương tác (đôi khi rất gián tiếp) giữa các thành phần.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Từ quan điểm của một lập trình viên thiết lập một dự án mới, các công cụ kiểm tra nhập là một thao tác LODING tùy chọn khác có thể được tích hợp trong các móc tiền cam kết hoặc tự động hóa khác.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Bảo hiểm 100% như là một tác dụng phụ của thử nghiệm cẩn thận không phải là một lá cờ đỏ.

Bảo hiểm là một biện pháp tốt (trong số những thứ khác) trừ khi nó trở thành mục tiêu. Một khi nó trở thành mục tiêu, bạn sẽ nhận được các bài kiểm tra vội vàng, hoạt động chủ yếu như xi măng xung quanh hành vi hiện tại - lỗi và tất cả.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Tôi đoán bạn không có nhiều kinh nghiệm với Python và mức độ dễ dàng để có được 100% trong đó.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Anh ấy không nói rằng rất khó để có được bảo hiểm 100%. Anh ấy nói rằng 100% là một chút suss vì bạn có thể sẽ không đạt được mức bảo hiểm 100% trừ khi đó là mục tiêu của bạn (ngay cả khi Python làm cho nó dễ dàng) và đó là mục tiêu sai.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Đó là một mục tiêu thực sự cho các ngôn ngữ năng động. Bạn không có tùy chọn nào khác để chắc chắn rằng mã của bạn không bị hỏng. Một tùy chọn khác là sử dụng các gợi ý 100%-Non-bất kỳ loại. Đó là một cách khó hơn.

Tôi có thể thấy đó là một mục tiêu không phải là bạn có quyền truy cập vào mã được triển khai và Sentry. Nhưng là tác giả thư viện hoặc tác giả của ứng dụng khách hàng, không có cách nào khác.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Cảm ơn vì những lời thận trọng! Đối với một gói nhỏ như vậy, tôi nghĩ rằng phạm vi bảo hiểm mã 100% chưa nhất thiết là một điều xấu: P nhưng bạn tăng điểm hợp lệ!

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

"Làm thế nào để bạn tạo gói Python? Làm thế nào để bạn thiết lập kiểm tra tự động và bảo hiểm mã? Làm thế nào để bạn xuất bản gói? Đó là những gì bài viết này dạy bạn." - Được giao như đã hứa!

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Hơn nữa: "Đã tạo gói Python; Thiết lập thơ để quản lý phụ thuộc; thiết lập kho lưu trữ GitHub để lưu trữ mã; đã xác định một số móc trước để đảm bảo chúng tôi chỉ thực hiện các cam kết đáp ứng các tiêu chí nhất định; thêm một (khá cho phép) giấy phép cho dự án; thơ được định cấu hình để cho phép tải lên PYPI và phiên bản thử nghiệm của PYPI; đã thử nghiệm tải gói lên phiên bản thử nghiệm của PYPI; thêm scriv để giúp chúng tôi quản lý và thế hệ thay đổi; được gắn thẻ và xuất bản dự án của chúng tôi; đã viết một loạt các bài kiểm tra; kiểm tra tự động và lót bằng TOX; phạm vi bảo hiểm mã đã kiểm tra và đưa nó lên 100%; thiết lập CI/CD với các hành động của GitHub để chạy và kiểm tra; Một hành động github để xuất bản gói của chúng tôi lên PYPI tự động; và thêm một số huy hiệu tiện lợi vào tệp readme. "

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Chúng tôi đã tốt với Cổ điển setup.py/setup.cfg + Gha để xuất bản sang PYPI. Nhưng như chúng ta làm khoa học dữ liệu OSS (GPU đồ thị AI + viz), trong đó Conda là điển hình ngày nay ...

... Phải thừa nhận: Gần đây chúng tôi đã kết thúc việc hợp đồng bao bì Conda vì không nơi nào đủ rõ ràng để có ý nghĩa để nhóm cốt lõi của chúng tôi gỡ rối. Rất thích xem một hướng dẫn tương tự về bao bì và xuất bản của GitHub Flow đến Conda. Vẫn không bị thuyết phục, chúng tôi đang làm điều đó đúng cho các sự tinh tế như phụ thuộc tùy chọn: Tương đương với `Pip Install Graphology` vs` Pip Install Fraphology [AI] `Vs` Đồ họa [Umap-Learn] `, v.v.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Chúng tôi làm rất nhiều việc học sâu và xử lý hình ảnh và PIP hoạt động tốt hơn nhiều cho chúng tôi. Pytorch tạo ra các bánh xe chứa tất cả các DLL đã làm lại trên tất cả các hệ thống. Có lẽ Conda isn không cần thiết nữa.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Tôi nghĩ về Conda là Notebook Jupyter. Bạn có thể thử nghiệm và có được thứ gì đó chạy nhanh chóng, nhưng đó là một ý tưởng tồi để sử dụng cho mã sản xuất.

Cá nhân tôi không bao giờ sử dụng một trong những công cụ này.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Conda cho phép bạn cài đặt một phiên bản CUDA cụ thể trực tiếp trong môi trường ảo chỉ bằng một cú nhấp chuột. Nó thực sự hữu ích khi bạn phải chuyển đổi giữa nhiều phiên bản pytorch và kết quả trong IMO nói chung.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Bánh xe Pytorch đi kèm với các DLL CUDA của riêng mình, họ có thể được chia sẻ với các thư viện khác nhưng họ đã giành được vấn đề của bạn để cài đặt theo cách đó.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Tôi thấy cộng đồng Conda-Forge khá hữu ích ở đây [1]. Họ làm cho các kho lưu trữ nguyên liệu dựa trên các mẫu bao gồm rất nhiều tự động hóa. Bots Pickup của họ được cập nhật các gói trong PYPI và tự động nộp các yêu cầu hợp nhất, chạy thử nghiệm và thậm chí hợp nhất các bản cập nhật nếu các bài kiểm tra vượt qua thành công. Về cơ bản, bạn chỉ cần duy trì công thức của mình ở đây và ở đó khi sự phụ thuộc của bạn thay đổi.

1. https://conda-forge.org/docs/user/introduction.html

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Đúng, đó là một trong những tài liệu tốt hơn!

Nhà thầu vẫn mất một vài tuần để tìm ra và đứng dậy. Tôi cho rằng đó là một buổi tối cho số lượng lớn ban đầu vì chúng tôi đã thiết lập.cfg, nhưng sau khi tìm kiếm các hướng dẫn của Conda .. không ngạc nhiên. Tệp meta cuối cùng của chúng tôi khá đơn giản, vì vậy không biết tại sao các tài liệu lại gián tiếp như vậy.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Ồ, tôi thấy ... cá nhân tôi hầu như không sử dụng Conga và tôi không biết làm thế nào điều đó được thực hiện. Tôi không nghĩ rằng tôi sẽ viết bất kỳ bài viết trên blog nào như vậy sớm :( Có lẽ bạn có thể làm điều đó!

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Này, tác giả ban đầu ở đây. Cảm ơn rất nhiều vì đã chia sẻ điều này!

Ngoài ra, không thể tin tất cả mọi người cho tôi thoát khỏi việc không viết về tài liệu! Tôi sẽ thấy nó được thực hiện và thêm vào bài viết.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Điều này thực sự tốt đẹp. Điều duy nhất tôi còn thiếu ở đây là một cách đơn giản để va chạm. Bất kỳ ý tưởng về cách làm điều đó?

Đối với nút, nó khá đơn giản và thậm chí được tích hợp vào NPM. Ngoài ra, phiên bản chỉ là một phần của tệp pack.json. Đối với Python, có lẽ bạn có phiên bản của mình ở đâu đó trong __init__.py, và tôi luôn luôn viết các tập lệnh bash xấu xí sửa đổi nhiều địa điểm với SED.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Tôi chưa bao giờ thực sự hiểu điều này. Chắc chắn, việc thay đổi phiên bản ở một nơi sẽ tốt hơn và tôi sẽ làm điều đó nếu có thể với các công cụ Python hiện tại. Nhưng tôi đã thấy các thiết lập điên rồ để đạt được điều này, phân tích __init__.py với regex từ setup.py, sử dụng các phụ thuộc của bên thứ ba chỉ làm điều đó, đôi khi các tập lệnh với hàng trăm dòng trong phân phối để hỗ trợ nó.

Là việc thay đổi số 2 địa điểm thực sự lớn của một thỏa thuận?

Dù sao thì bạn cũng nên có một danh sách kiểm tra phát hành, với các bước như gửi email thông báo hoặc tweet, v.v ... Điều này thực sự tiết kiệm được bao nhiêu thời gian, với chi phí rất phức tạp?

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Chương trình của bạn cần có khả năng xuất ra phiên bản của nó (ví dụ: với tùy chọn --Version CLI) và với setup.py tôi ít nhất có thể phân tích __init__.py. Tệp pyproject.toml không làm điều đó, vì vậy đột nhiên tôi phải duy trì hai số phiên bản.

Tôi duy trì nửa tá gói python nhỏ. Tôi không thực hiện email, tweet, v.v. Tôi chỉ muốn tạo các bản phát hành dễ dàng khi có sửa lỗi. Nó không chỉ tiết kiệm thời gian để tự động hóa bước này (tôi có thể sử dụng cùng một tập lệnh để phát hành từng gói), điều đó còn có nghĩa là bạn không thể quên mọi thứ. Trước khi tôi có một kịch bản, tôi luôn quên nhấn thẻ hoặc chạy Changelog, v.v.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Tôi biết cam kết và nó không làm điều đó. Nó thực thi các hình thức cụ thể của các thông điệp cam kết, nhưng nó không va vào các phiên bản trong các dự án Python.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Một bài viết rất hay. Cân nhắc thêm một nguồn cấp dữ liệu RSS/Atom nổi bật cho blog của bạn. Việc tôi không tìm thấy một người có nghĩa là tôi sẽ không dễ dàng bắt bất kỳ bài viết trong tương lai.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Tiêu đề nên là: Cách tạo "Gói phân phối Python".

Thuật ngữ "Gói Python" có nghĩa là một cái gì đó hoàn toàn khác nhau (hoặc ít nhất là mơ hồ trong bối cảnh pypi/phân phối).

Để thêm vào sự nhầm lẫn, tạo ra một gói python hoàn toàn bình thường, có thể chạy theo cách khiến nó hoàn toàn khép kín sao cho nó có thể được "phân phối" một cách độc lập, trong khi vẫn là một gói Python nhàm chán hoàn toàn bình thường, cũng hoàn toàn có thể (nếu không ưa thích, theo quan điểm của tôi).

.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Tôi đoán đó là một bài tập tuyệt vời để tự thiết lập kho lưu trữ theo cách này, nhưng một khi bạn có kinh nghiệm với các công nghệ liên quan, việc sử dụng mẫu cookieCutter [1] sẽ dễ dàng hơn nhiều để thiết lập gói của bạn. Một khía cạnh khác cần xem xét là thường có các công cụ khác nhau để đạt được cùng một mục tiêu, do đó, thật hợp lý khi thử nghiệm cho đến khi bạn tìm thấy thiết lập gói hoàn hảo của mình.

.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Điểm tuyệt vời! Tôi đã thấy một số mẫu cookiecutter, nhưng như bạn đã nói, những mẫu đó không hữu ích khi bạn ở ngay từ đầu và mọi thứ trông kỳ lạ và mới mẻ.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Thở dài, tôi không thấy lý do tại sao tôi cần sử dụng một công cụ của bên thứ 3 cho những gì nên là một quá trình rất đơn giản trong Python ra khỏi hộp. Trên thực tế, tôi nghĩ rằng những ngày này thực sự rất đơn giản, tất nhiên là một khi bạn tìm ra những gì bạn cần làm ...

Python là một mớ hỗn độn.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Chỉ là FYI, cả NPM và Sợi là các công cụ của bên thứ ba. Hàng hóa gần với lõi rỉ sét hơn và bạn cũng có thể tìm thấy các công cụ ở một vị trí tương tự trong Python (ví dụ: setuptools, hatch). Các công cụ đóng gói được quản lý bởi một nhóm khác với những người làm việc trên ngôn ngữ cốt lõi của người Hồi giáo thực sự là tiêu chuẩn, vì đó là những chủ đề rất khác nhau và chỉ có rất ít người quan tâm đến cả hai người cùng một lúc. Python mọi người có xu hướng không che giấu một số chi tiết thực hiện này (có thể tự chọn bởi sự lựa chọn của họ để sử dụng Python ngay từ đầu), và không thích nó, nhưng hy vọng điều này sẽ giúp làm rõ nơi mà sự ghét bỏ của bạn đến từ đó bạn không ' T bị cháy bởi những kỳ vọng sai ở nơi khác trên đường.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Thay vì không an toàn về những lời chỉ trích đối với hệ sinh thái Python và gọi sự thất vọng của tôi là "hận thù", tôi muốn tập trung vào các giải pháp.

Chỉ vì mớ hỗn độn này xảy ra trong một số ngôn ngữ khác không có nghĩa là điều đúng đắn. Có một cộng đồng rất phân mảnh không phải là một điều tốt cho người mới bắt đầu. Ngoài ra, NPM là một lựa chọn thực tế hơn nhiều so với thơ, vẫn còn tốt hơn so với Python nhà nước tìm thấy chính nó.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Nó thậm chí không xảy ra trong ví dụ về nút. NPM thậm chí còn được gói cùng với nodejs và sợi hoàn toàn tương thích với pack.json.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Thật ấn tượng khi điều này liên quan đến 3 ngôn ngữ cấu hình có thể đọc được của con người và 2 ngôn ngữ đánh dấu

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Bạn cũng có thể sử dụng pyproject.toml cho cấu hình Tox:

    [tool.tox]
    legacy_tox_ini = """"""

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Vâng, nhưng điều đó có vẻ hơi kỳ lạ và bạn mất cú pháp làm nổi bật ... Tôi đã xem xét điều đó nhưng cuối cùng đã đi với tệp Tox.ini.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Bạn có thể tiến thêm một bước và tự động hóa hoàn toàn việc phát hành gói của bạn. Điều đó có nghĩa là việc gắn thẻ, xuất bản và ghi chú phát hành GitHub.

Tôi không có một bài đăng trên blog nhưng bạn có thể thấy quy trình trên dự án cá nhân của tôi https://github.com/dontshavetheyak/cf2tf

Kiểm tra các hành động PR được hợp nhất và GitHub.

Tôi thậm chí còn thực hiện các bản phát hành alpha để kiểm tra PYPI.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Cuối cùng, tôi đã có thành công tốt với `apprease-xin vui lòng`: https://github.com/googleapis/release-fease. Nó có sẵn như một hành động github và hoạt động rất dễ dàng. Nó gắn thẻ, xuất bản, chỉnh sửa Changelog, tạo ra một bản phát hành và hơn thế nữa. Bất cứ điều gì bạn muốn nó, thực sự, sử dụng một lá cờ Bool trong đường ống CI kích hoạt sau khi bản phát hành thả được phát hành được thực hiện hay còn gọi là hợp nhất thành Main.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Điều tốt là cuối cùng đã hội tụ trên một số loại công cụ có nghĩa là tiêu chuẩn trở nên tương tác hơn:

Một công cụ tốt khác (được PYPA tán thành) là Hatch - https://hatch.pypa.io/latest/environment/

Tôi hiện đang sử dụng PDM vì nó hỗ trợ môi trường ảo Conda để cô lập, nhưng đang để mắt đến nở.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Cám ơn những lời tốt đẹp. Có bất cứ điều gì không rõ ràng hoặc bạn nghĩ là thiếu?

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Bài viết tuyệt vời. Cảm ơn bạn rất nhiều vì đã đặt điều này lại với nhau. Bất kỳ suy nghĩ về việc đặt điều này trong một repo git ở đâu đó để nó có thể là một tài liệu tham khảo sống được đóng góp cho người khác? Nếu không, tôi lo lắng rằng trong 6 tháng, điều này sẽ bắt đầu trở nên khó hiểu, và trong 18 tháng, nó sẽ rất nguy hiểm (mặc dù tôi đã sử dụng thơ, vì vậy có lẽ họ nhắm đến sự ổn định hơn).

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

HM, đó là lập luận rất kỳ lạ về thư mục SRC. Bài báo họ đề cập đến vấn đề chính được đề cập với gói trong root là: có thể bỏ lỡ các mô hình con trong PY-Package được phát hành cuối cùng. Nhưng SRC không ngăn chặn điều này. Bạn cũng có thể chạy các bài kiểm tra của bạn. Nhưng không có tùy chọn gói thích hợp hoặc find_packages trong setup.py, người ta có một gói bị hỏng.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Đây là một nguồn tài nguyên tuyệt vời.

Có tài nguyên tương tự nào để thiết lập các gói nội bộ mà bạn không có ý định xuất bản công khai không?

Tôi có thể nghĩ về một số tình huống mà tôi sẽ thu hút được từ nó, nhưng quá trình cấu hình một gói để xuất bản, lưu trữ nó và sau đó kéo nó khi cần thiết là một bí ẩn đối với tôi.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Sự kìm kẹp duy nhất của tôi với thơ là khi tôi thử nó vào năm ngoái, không có tương đương cho `pip install -e` có thể được sử dụng để cài đặt các phụ thuộc gói Python khác mà bạn đang phát triển đồng thời. Tôi thấy tính năng đó đủ hữu ích để gắn bó với setuptools và setup.py thay thế.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Cảm ơn, tôi nghĩ rằng điều mà điều này vẫn còn thiếu so với `pip install -e` là sự phụ thuộc phát triển sau đó chỉ hiển thị bên trong các gói khác được cấu hình bằng thơ. Vì vậy, nó không hữu ích, ví dụ nếu bạn muốn cài đặt cục bộ một gói bạn thực hiện để được truy cập thông qua CLI hoặc bất kỳ tập lệnh Python nào khác không sử dụng thơ.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Tôi không chắc bạn đang nói gì. Nó sẽ được cài đặt trong môi trường ảo giống nhau. Không có cơ chế để nó "chỉ hiển thị bên trong các gói khác được cấu hình bằng thơ".

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Ý tôi là `Cài đặt pip -e` cũng cài đặt nó bên ngoài môi trường ảo.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Có một API được tiêu chuẩn hóa cho các công cụ gói để lộ và gọi chức năng cài đặt có thể chỉnh sửa [1] mà PIP cài đặt theo sau, nhưng thơ đã không thực hiện API này trước đây (tôi thấy nó hiện tại vào tháng 2 vừa qua [2]).

Nói cách khác, đây là một lời giải thích kỹ lưỡng hơn về quan điểm của tôi từ [3]:

> Có, nếu bạn chạy cài đặt thơ, bạn có thể có được chế độ có thể chỉnh sửa, nhưng điều đó đòi hỏi mọi người dùng cuối của gói của bạn để cài đặt thơ và gọi rõ ràng một bản cài đặt thơ chỉ cho gói của bạn. Và nếu gói của người khác sử dụng một nhà xây dựng gói khác, bây giờ họ cần cài đặt và gọi cái đó. Và trên và trên, và bạn kết thúc với một tập lệnh cài đặt sáu trăm dòng vì tất cả các phần "phải cài đặt trình quản lý gói yêu thích của nhà phát triển này để sử dụng gói" của họ.

[1] https://peps.python.org/pep-0660/

.

[3] https: //www.reddit.com/pp

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Gần đây tôi đã thiết lập một gói Python mới và chạy qua các hướng dẫn GitHub để tự động tải gói lên PYPI. Một tháng sau tôi gặp phải một lỗi và cần phải đẩy ra một bản cập nhật, người đàn ông rất tuyệt khi được tự động hóa và dễ dàng thiết lập.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Tôi thực sự không thích quy ước Python của mã nguồn một cách hiệu quả trong thư mục gốc. Nó có nghĩa đen là bất kỳ thứ ngẫu nhiên nào trong đó có thể được chọn nếu bạn đặt gói hàng của mình vào Pythonpath. Có lý do gì thế giới Python không chuẩn hóa về việc đặt mã nguồn vào thư mục "SRC" như mọi ngôn ngữ khác không?

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Python đặt mã nguồn vào một thư mục với tên của gói. Đó là lý do tại sao mã nguồn thực sự nằm dưới `repo_root/pack/`, không phải trong `repo_root/` như bạn dường như ngụ ý. Nó chỉ là nó không được gọi là `src/`, mà là `gói/` trong python (nhưng đó có thể cấu hình!).

Vì vậy, nếu bạn có một dự án gọi là "chia tách", mã nguồn của bạn thực sự sống dưới `splitter/splitter/`. Tôi đồng ý rằng có vẻ hơi dư thừa và `splitter/src` trông đẹp hơn, nhưng mã nguồn không nằm trong root dự án.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Tôi không có một thư mục SRC duy nhất trong bất kỳ dự án Elixir, JavaScript, Ruby nào mà tôi hiện đang làm việc. Python cũng vậy, rõ ràng.

Tôi đã nhận được các thư mục SRC trong các phụ thuộc Elixir được viết bằng Erlang, trong khoảng 12% của Node_Modules được sử dụng bởi một dự án React và trong một vài phần mở rộng C tôi đang sử dụng cho Ruby.

Tôi có thể kết luận rằng SRC ít nhất là không phổ biến trong các ngôn ngữ kịch bản không? .

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Bài đăng không có ý nghĩa. Nó nói rõ rằng bạn chỉ chắc chắn rằng gói đang hoạt động bằng cách thực sự cài đặt nó vào Virtualenv sạch và kiểm tra nó ở đó. `SRC` hoặc bất kỳ bố cục nào khác không quan trọng.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Sự khác biệt là nếu bạn đang chạy thử nghiệm từ thư mục dự án gốc của mình, gói có thể nhập bất kể nó được cài đặt hay không, vì Python chọn các gói trong thư mục làm việc hiện tại theo tên. SRC/ ngăn chặn điều này.

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Nhưng nó không ngăn chặn các lỗi cấu hình gói và cho phép BDist bị hỏng gói. Sau đó, điểm nào?

Hướng dẫn how do i create a python package 2022? - làm cách nào để tạo một gói python 2022?

Câu hỏi liên quan: Làm thế nào để đóng gói chính xác một ứng dụng đồ họa, tốt nhất là cho Linux?

Làm thế nào để bạn tạo gói của riêng bạn trong Python?

Trong bài viết này, chúng tôi đã trải qua các bước sau đây để tạo gói Python:..
Làm các yếu tố gói cần thiết và quan tâm đến các tên ..
Viết mã gói ..
Tạo một tài khoản Pypi ..
Xuất bản gói trên PYPI ..
Cài đặt, nhập và chạy gói PIP ..

Làm cách nào để tạo và xuất bản một gói trong Python?

Cách xuất bản gói Python nguồn mở lên PYPI..
Làm quen với bao bì Python ..
Tạo một gói Python nhỏ.Sử dụng đầu đọc Python thực sự.Hiểu mã người đọc.....
Chuẩn bị gói của bạn để xuất bản.Đặt tên cho gói của bạn.....
Xuất bản gói của bạn lên PYPI.Xây dựng gói của bạn.....
Khám phá các hệ thống xây dựng khác.Flit.....
Conclusion..

Làm cách nào để tạo một mô -đun và gói?

Để tạo một mô -đun, chỉ cần lưu mã bạn muốn trong một tệp với phần mở rộng tệp .Py:..
Lưu mã này trong một tệp có tên mymodule.py.....
Nhập mô -đun có tên myModule và gọi hàm lời chào: ....
Lưu mã này trong tệp mymodule.py.....
Nhập mô -đun có tên MyModule và truy cập từ điển Person1:.