Hướng dẫn how do i create a python repository package? - làm cách nào để tạo một gói kho lưu trữ python?
Hướng dẫn này hướng dẫn bạn cách đóng gói một dự án Python đơn giản. Nó sẽ chỉ cho bạn cách thêm các tệp và cấu trúc cần thiết để tạo gói, cách xây dựng gói và cách tải nó lên Chỉ mục Gói Python (PYPI). Show
Mẹo Nếu bạn gặp khó khăn trong việc chạy các lệnh trong hướng dẫn này, vui lòng sao chép lệnh và đầu ra của nó, sau đó mở một vấn đề trên kho lưu trữ kết quả đóng gói trên GitHub. Chúng tôi sẽ làm hết sức mình để giúp bạn! Một số lệnh yêu cầu phiên bản PIP mới hơn, vì vậy hãy bắt đầu bằng cách đảm bảo bạn đã cài đặt phiên bản mới nhất:pip, so start by making sure you have the latest version installed: Unix/macOS python3 -m pip install --upgrade pip các cửa sổ py -m pip install --upgrade pip Một dự án đơn giảnHướng dẫn này sử dụng một dự án đơn giản có tên packaging_tutorial/ └── src/ └── example_package_YOUR_USERNAME_HERE/ ├── __init__.py └── example.py4. Nếu tên người dùng của bạn là packaging_tutorial/ └── src/ └── example_package_YOUR_USERNAME_HERE/ ├── __init__.py └── example.py5, thì gói sẽ là packaging_tutorial/ └── src/ └── example_package_YOUR_USERNAME_HERE/ ├── __init__.py └── example.py6; Điều này đảm bảo rằng bạn có một tên gói duy nhất không xung đột với các gói được tải lên bởi những người khác theo hướng dẫn này. Chúng tôi khuyên bạn nên làm theo hướng dẫn này là sử dụng dự án này, trước khi đóng gói dự án của riêng bạn. Tạo cấu trúc tệp sau đây cục bộ: packaging_tutorial/ └── src/ └── example_package_YOUR_USERNAME_HERE/ ├── __init__.py └── example.py Thư mục chứa các tệp Python phải khớp với tên dự án. Điều này đơn giản hóa cấu hình và rõ ràng hơn đối với người dùng cài đặt gói. packaging_tutorial/ └── src/ └── example_package_YOUR_USERNAME_HERE/ ├── __init__.py └── example.py7 được yêu cầu nhập thư mục dưới dạng gói và phải trống. packaging_tutorial/ └── src/ └── example_package_YOUR_USERNAME_HERE/ ├── __init__.py └── example.py8 là một ví dụ về mô -đun trong gói có thể chứa logic (chức năng, lớp, hằng số, v.v.) của gói của bạn. Mở tệp đó và nhập nội dung sau: def add_one(number): return number + 1 Nếu bạn không quen thuộc với các mô -đun Python và các gói nhập, hãy dành vài phút để đọc tài liệu Python cho các gói và mô -đun.modules and import packages, take a few minutes to read over the Python documentation for packages and modules. Khi bạn tạo cấu trúc này, bạn sẽ muốn chạy tất cả các lệnh trong hướng dẫn này trong thư mục packaging_tutorial/ └── src/ └── example_package_YOUR_USERNAME_HERE/ ├── __init__.py └── example.py9. Tạo các tệp góiBây giờ bạn sẽ thêm các tệp được sử dụng để chuẩn bị dự án để phân phối. Khi bạn hoàn thành, cấu trúc dự án sẽ trông như thế này: packaging_tutorial/ ├── LICENSE ├── pyproject.toml ├── README.md ├── src/ │ └── example_package_YOUR_USERNAME_HERE/ │ ├── __init__.py │ └── example.py └── tests/ Tạo một thư mục kiểm tradef add_one(number): return number + 10 là một trình giữ chỗ cho các tập tin kiểm tra. Để nó trống cho bây giờ. Tạo pyproject.toml¶def add_one(number): return number + 11 cho biết các công cụ xây dựng Front Front Frontend như PIP và xây dựng những gì công cụ phụ trợ của Google để sử dụng để tạo các gói phân phối cho dự án của bạn. Bạn có thể chọn từ một số phụ trợ; Hướng dẫn này sử dụng Hatchling theo mặc định, nhưng nó sẽ hoạt động giống hệt với Setuptools, FLIT, PDM và những người khác hỗ trợ bảng def add_one(number): return number + 12 cho siêu dữ liệu.pip and build what “backend” tool to use to create distribution packages for your project. You can choose from a number of backends; this tutorial uses Hatchling by default, but it will work identically with setuptools, Flit, PDM, and others that support the def add_one(number): return number + 12 table for metadata. Ghi chú Một số phụ trợ xây dựng là một phần của các công cụ lớn hơn cung cấp giao diện dòng lệnh với các tính năng bổ sung như khởi tạo dự án và quản lý phiên bản, cũng như xây dựng, tải lên và cài đặt các gói. Hướng dẫn này sử dụng các công cụ đơn mục đích hoạt động độc lập. Mở def add_one(number): return number + 11 và nhập một trong các bảng def add_one(number): return number + 14 này: Truthling [build-system] requires = ["hatchling"] build-backend = "hatchling.build" setuptools [build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" Flit [build-system] requires = ["flit_core>=3.2"] build-backend = "flit_core.buildapi" PDM [build-system] requires = ["pdm-pep517"] build-backend = "pdm.pep517.api"
Cấu hình siêu dữ liệuMở def add_one(number): return number + 11 và nhập nội dung sau. Thay đổi def add_one(number): return number + 18 để bao gồm tên người dùng của bạn; Điều này đảm bảo rằng bạn có một tên gói duy nhất không xung đột với các gói được tải lên bởi những người khác theo hướng dẫn này. [project] name = "example_package_YOUR_USERNAME_HERE" version = "0.0.1" authors = [ { name="Example Author", email="" }, ] description = "A small example package" readme = "README.md" requires-python = ">=3.7" classifiers = [ "Programming Language :: Python :: 3", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", ] [project.urls] "Homepage" = "https://github.com/pypa/sampleproject" "Bug Tracker" = "https://github.com/pypa/sampleproject/issues"
Xem thông số kỹ thuật siêu dữ liệu của dự án để biết chi tiết về các trường này và các trường khác có thể được xác định trong bảng def add_one(number): return number + 12. Các trường phổ biến khác là [build-system] requires = ["hatchling"] build-backend = "hatchling.build"3 để cải thiện khả năng khám phá và [build-system] requires = ["hatchling"] build-backend = "hatchling.build"4 được yêu cầu để cài đặt gói của bạn.project metadata specification for details on these and other fields that can be defined in the def add_one(number): return number + 12 table. Other common fields are [build-system] requires = ["hatchling"] build-backend = "hatchling.build"3 to improve discoverability and the [build-system] requires = ["hatchling"] build-backend = "hatchling.build"4 that are required to install your package. Tạo readme.md¶Mở packaging_tutorial/ ├── LICENSE ├── pyproject.toml ├── README.md ├── src/ │ └── example_package_YOUR_USERNAME_HERE/ │ ├── __init__.py │ └── example.py └── tests/8 và nhập nội dung sau. Bạn có thể tùy chỉnh điều này nếu bạn thích. py -m pip install --upgrade pip0 Tạo giấy phép lorNó rất quan trọng cho mỗi gói được tải lên chỉ mục gói Python để bao gồm giấy phép. Điều này cho người dùng cài đặt gói của bạn các điều khoản mà họ có thể sử dụng gói của bạn. Để được trợ giúp chọn giấy phép, hãy xem https://choosealicense.com/. Khi bạn đã chọn giấy phép, hãy mở [build-system] requires = ["hatchling"] build-backend = "hatchling.build"6 và nhập văn bản giấy phép. Ví dụ: nếu bạn đã chọn giấy phép MIT: py -m pip install --upgrade pip1 Hầu hết các phụ trợ xây dựng tự động bao gồm các tệp giấy phép trong các gói. Xem tài liệu phụ trợ của bạn để biết thêm chi tiết. Bao gồm các tập tin khácCác tệp được liệt kê ở trên sẽ được bao gồm tự động trong phân phối nguồn của bạn. Nếu bạn muốn bao gồm các tệp bổ sung, hãy xem tài liệu cho phụ trợ xây dựng của bạn.source distribution. If you want to include additional files, see the documentation for your build backend. Tạo tài liệu lưu trữ phân phốiBước tiếp theo là tạo các gói phân phối cho gói. Đây là những tài liệu lưu trữ được tải lên chỉ mục gói Python và có thể được cài đặt bởi PIP.distribution packages for the package. These are archives that are uploaded to the Python Package Index and can be installed by pip. Đảm bảo bạn đã cài đặt phiên bản mới nhất của Pypa, bản dựng:build installed: Unix/macOS py -m pip install --upgrade pip2 các cửa sổ py -m pip install --upgrade pip3 Bây giờ hãy chạy lệnh này từ cùng một thư mục nơi def add_one(number): return number + 11 được đặt: Lệnh này sẽ xuất ra rất nhiều văn bản và sau khi hoàn thành sẽ tạo hai tệp trong thư mục [build-system] requires = ["hatchling"] build-backend = "hatchling.build"8: py -m pip install --upgrade pip4 Tệp [build-system] requires = ["hatchling"] build-backend = "hatchling.build"9 là một phân phối nguồn trong khi tệp [build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta"0 là phân phối được xây dựng. Các phiên bản PIP mới hơn ưu tiên cài đặt các phân phối được xây dựng, nhưng sẽ quay trở lại phân phối nguồn nếu cần. Bạn nên luôn luôn tải lên một phân phối nguồn và cung cấp các bản phân phối được xây dựng cho các nền tảng mà dự án của bạn tương thích. Trong trường hợp này, gói ví dụ của chúng tôi tương thích với Python trên bất kỳ nền tảng nào, vì vậy chỉ cần một phân phối được xây dựng.source distribution whereas the [build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta"0 file is a built distribution. Newer pip versions preferentially install built distributions, but will fall back to source distributions if needed. You should always upload a source distribution and provide built distributions for the platforms your project is compatible with. In this case, our example package is compatible with Python on any platform so only one built distribution is needed. Tải lên Lưu trữ phân phốiCuối cùng, đó là thời gian để tải gói của bạn lên chỉ mục gói Python! Điều đầu tiên bạn cần làm là đăng ký một tài khoản trên TestPyPi, đây là một ví dụ riêng biệt của chỉ mục gói dự định để thử nghiệm và thử nghiệm. Nó rất tuyệt cho những thứ như hướng dẫn này, nơi chúng tôi không nhất thiết muốn tải lên chỉ mục thực. Để đăng ký một tài khoản, hãy truy cập https://test.pypi.org/account/register/ và hoàn thành các bước trên trang đó. Bạn cũng sẽ cần xác minh địa chỉ email của mình trước khi bạn có thể tải lên bất kỳ gói nào. Để biết thêm chi tiết, xem bằng cách sử dụng TestPypi.Using TestPyPI. Để tải lên một cách an toàn dự án của bạn, bạn sẽ cần một mã thông báo API PYPI. Tạo một cái tại https://test.pypi.org/manage/account/#api-tokens, đặt phạm vi phạm vi trên toàn bộ tài khoản. Don Tiết đóng trang cho đến khi bạn đã sao chép và lưu mã thông báo - bạn đã giành được mã thông báo đó một lần nữa.Don’t close the page until you have copied and saved the token — you won’t see that token again. Bây giờ bạn đã đăng ký, bạn có thể sử dụng Twine để tải lên các gói phân phối. Bạn cần phải cài đặt Twine:twine to upload the distribution packages. You’ll need to install Twine: Unix/macOS py -m pip install --upgrade pip5 các cửa sổ py -m pip install --upgrade pip6 Bây giờ hãy chạy lệnh này từ cùng một thư mục nơi def add_one(number): return number + 11 được đặt: Unix/macOS py -m pip install --upgrade pip7 các cửa sổ py -m pip install --upgrade pip8 Bây giờ hãy chạy lệnh này từ cùng một thư mục nơi def add_one(number): return number + 11 được đặt: Lệnh này sẽ xuất ra rất nhiều văn bản và sau khi hoàn thành sẽ tạo hai tệp trong thư mục [build-system] requires = ["hatchling"] build-backend = "hatchling.build"8: py -m pip install --upgrade pip9 Tệp [build-system] requires = ["hatchling"] build-backend = "hatchling.build"9 là một phân phối nguồn trong khi tệp [build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta"0 là phân phối được xây dựng. Các phiên bản PIP mới hơn ưu tiên cài đặt các phân phối được xây dựng, nhưng sẽ quay trở lại phân phối nguồn nếu cần. Bạn nên luôn luôn tải lên một phân phối nguồn và cung cấp các bản phân phối được xây dựng cho các nền tảng mà dự án của bạn tương thích. Trong trường hợp này, gói ví dụ của chúng tôi tương thích với Python trên bất kỳ nền tảng nào, vì vậy chỉ cần một phân phối được xây dựng. Tải lên Lưu trữ phân phốiCuối cùng, đó là thời gian để tải gói của bạn lên chỉ mục gói Python!pip to install your package and verify that it works. Create a virtual environment and install your package from TestPyPI: Unix/macOS packaging_tutorial/ └── src/ └── example_package_YOUR_USERNAME_HERE/ ├── __init__.py └── example.py0 các cửa sổ packaging_tutorial/ └── src/ └── example_package_YOUR_USERNAME_HERE/ ├── __init__.py └── example.py1 Bây giờ hãy chạy lệnh này từ cùng một thư mục nơi def add_one(number): return number + 11 được đặt: Lệnh này sẽ xuất ra rất nhiều văn bản và sau khi hoàn thành sẽ tạo hai tệp trong thư mục [build-system] requires = ["hatchling"] build-backend = "hatchling.build"8: packaging_tutorial/ └── src/ └── example_package_YOUR_USERNAME_HERE/ ├── __init__.py └── example.py2 Tệp [build-system] requires = ["hatchling"] build-backend = "hatchling.build"9 là một phân phối nguồn trong khi tệp [build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta"0 là phân phối được xây dựng. Các phiên bản PIP mới hơn ưu tiên cài đặt các phân phối được xây dựng, nhưng sẽ quay trở lại phân phối nguồn nếu cần. Bạn nên luôn luôn tải lên một phân phối nguồn và cung cấp các bản phân phối được xây dựng cho các nền tảng mà dự án của bạn tương thích. Trong trường hợp này, gói ví dụ của chúng tôi tương thích với Python trên bất kỳ nền tảng nào, vì vậy chỉ cần một phân phối được xây dựng. Tải lên Lưu trữ phân phối Bạn có thể kiểm tra rằng nó đã được cài đặt chính xác bằng cách nhập gói. Hãy chắc chắn rằng bạn vẫn còn trong môi trường ảo của mình, sau đó chạy Python: và nhập gói: packaging_tutorial/ └── src/ └── example_package_YOUR_USERNAME_HERE/ ├── __init__.py └── example.py3 Bước tiếp theo¶Xin chúc mừng, bạn đã đóng gói và phân phối một dự án Python! ✨ 🍰 ✨ 🍰 ✨ Hãy nhớ rằng hướng dẫn này đã chỉ cho bạn cách tải lên gói của bạn để kiểm tra PYPI, đây là một bộ lưu trữ vĩnh viễn. Hệ thống thử nghiệm thỉnh thoảng xóa các gói và tài khoản. Tốt nhất là sử dụng TestPypi để thử nghiệm và thử nghiệm như hướng dẫn này. Khi bạn đã sẵn sàng để tải lên một gói thực sự lên chỉ mục gói Python, bạn có thể làm nhiều như bạn đã làm trong hướng dẫn này, nhưng với những khác biệt quan trọng này:
Tại thời điểm này nếu bạn muốn đọc thêm về các thư viện Python đóng gói thì đây là một số điều bạn có thể làm:
Làm cách nào để tạo gói thư viện Python?Làm thế nào để tạo một thư viện Python.. Bước 1: Tạo một thư mục mà bạn muốn đặt thư viện của mình. .... Bước 2: Tạo môi trường ảo cho thư mục của bạn. .... Bước 3: Tạo cấu trúc thư mục. .... Bước 4: Tạo nội dung cho thư viện của bạn. .... Bước 5: Xây dựng thư viện của bạn .. Làm cách nào để tạo gói Python từ kho lưu trữ GitHub?Cách lưu trữ gói Python của bạn trên Pypi với GitHub.. 1: Tạo tài khoản. Để gửi gói của bạn trên PYPI, bạn cần có một vài tài khoản trên trang web PYPI. .... 2: The. Tệp pypirc. .... 3: Cấu trúc thư mục gói Python. .... 4: Phát hành trên GitHub và nhận liên kết tải xuống. .... 5: Chỉnh sửa tệp. .... 6: Xuất bản gói .. Làm cách nào để tạo một kho lưu trữ riêng trong Python?Cài đặt máy chủ PYPI.. Cài đặt VirtualEnv nếu chưa được cài đặt: PIP Cài đặt VirtualEnv .. Tạo một thư mục mới sẽ được sử dụng để chứa các gói Python cũng như các tệp được Apache sử dụng..... Tải xuống gói thông qua PIP trong môi trường ảo mới được tạo: PIP Cài đặt Pypisterver Lưu ý .. Kho lưu trữ Python là gì?Tổng quan.Các kho lưu trữ Python là nơi các nhóm phát triển phần mềm phát triển với Python chia sẻ các tạo tác mã của họ (thư viện, gói, v.v.).Chỉ số gói Python hoặc PYPI, là kho lưu trữ công khai nơi nguồn mở và các tạo tác công khai khác có thể được tải lên và tải xuống.where software development teams that develop with Python share their code artifacts (libraries, packages, etc.). The Python Package Index or PyPi, is the public repository where open source and other publicly available artifacts can be uploaded and downloaded. |