Gói là một thùng chứa các chức năng khác nhau để thực hiện các tác vụ cụ thể. Ví dụ: gói math
bao gồm hàm sqrt[]
để thực hiện căn bậc hai của một số
Khi làm việc trên các dự án lớn, chúng ta phải xử lý một lượng lớn mã và việc viết mọi thứ cùng nhau trong cùng một tệp sẽ khiến mã của chúng ta trông lộn xộn. Thay vào đó, chúng ta có thể tách mã của mình thành nhiều tệp bằng cách giữ mã có liên quan với nhau trong các gói
Bây giờ, chúng ta có thể sử dụng gói bất cứ khi nào chúng ta cần trong các dự án của mình. Bằng cách này, chúng tôi cũng có thể sử dụng lại mã của mình
Cấu trúc mô hình gói trong lập trình Python
Giả sử chúng ta đang phát triển một trò chơi. Một tổ chức có thể có của các gói và mô-đun có thể như trong hình bên dưới
@alod83][//www.github.com/alod83]## InstallationInstall my-project with pip```bashpip install package_template
```## Requirements* numpy
kết xuất như sau
GIẤY PHÉP
Nhiều giấy phép tồn tại để phát hành phần mềm. Các loại giấy phép mở và miễn phí phổ biến nhất bao gồm
- giấy phép miền công cộng, cấp tất cả các quyền
- giấy phép cho phép, cấp quyền sử dụng, bao gồm cả quyền cấp phép lại. Danh mục này bao gồm giấy phép MIT và Apache
- giấy phép bảo vệ, chẳng hạn như GPL, cấp quyền sử dụng, nhưng cấm sở hữu
pyproject. toml
Như đã nói, tệp này chứa các lệnh để xây dựng gói. Đoạn mã sau đây cho thấy một ví dụ rất cơ bản về pyproject. tập tin toml
[build-system]requires = [
"setuptools",
"wheel"
]build-backend = "setuptools.build_meta"
Biến
from package1.p1 import p1_sum
2 chỉ định các thư viện cần thiết để xây dựng gói. Điều này KHÔNG bao gồm thư viện được gói khai thác [i. e. các thư viện được nhập trong các tập lệnh đơn]Ví dụ trước xác định rằng cơ chế được sử dụng để xây dựng gói là
from package1.p1 import p1_sum
3cài đặt. cfg
Đoạn mã sau hiển thị một ví dụ cơ bản về tệp
from package1.p1 import p1_sum
1[metadata]name = package_template_YOUR-USERNAME-HERE
version = 0.0.1
author = Name Surname
author_email = author@example.com
description = A package template
long_description = file: README.md
long_description_content_type = text/markdown
url = //github.com/alod83/package_template
project_urls =
Bug Tracker = //github.com/alod83/package_template/issuesclassifiers =
Programming Language :: Python :: 3
License :: OSI Approved :: MIT License
Operating System :: OS Independent[options]
package_dir =
= srcpackages = find:
python_requires = >=3.6
install_requires =
numpy
Phần
from package1.p1 import p1_sum
5 chứa một số thông tin cơ bản, liên quan đến tên của gói, tác giả, phiên bản và những nội dung tương tự khác. Để phát hành phiên bản mới của gói, số phiên bản trong phần này có thể được thay đổiPhần tùy chọn chứa thông tin về phiên bản Python [≥3. 6 trong ví dụ trên] và các thành phần phụ thuộc [được xác định bằng từ khóa
from package1.p1 import p1_sum
6Để biết thêm chi tiết, liên quan đến tệp
from package1.p1 import p1_sum
1, bạn có thể xem trang nàyBây giờ tôi có thể tạo bản phân phối. Tôi phải cài đặt gói
from package1.p1 import p1_sum
8, nếu tôi chưa cài đặt gói nàypip install build
Sau khi cài đặt, tôi vào thư mục gốc của gói và chạy lệnh sau
python -m build
Thao tác này có thể cần một chút thời gian. Sau khi hoàn thành, một thư mục mới xuất hiện trong thư mục gốc cục bộ của tôi, được gọi là
from package1.p1 import p1_sum
9, chứa hai tệp chínhpackage_template-YOUR-USERNAME-HERE-0.0.1.tar.gzpackage_template_YOUR_USERNAME_HERE-0.0.1-py3-none-any.whlTải gói lên kho lưu trữ PIP thử nghiệm
Gói đã sẵn sàng để được triển khai trong kho lưu trữ PIP chính thức. Tuy nhiên, trước khi triển khai nó, tôi thực sự khuyên bạn nên kiểm tra nó, trong kho lưu trữ PIP thử nghiệm, đây không phải là kho lưu trữ chính thức mà chỉ là kho lưu trữ thử nghiệm
Đầu tiên, tôi phải tạo một tài khoản mới trong Kho lưu trữ thử nghiệm, theo liên kết này. Sau khi tạo và kích hoạt tài khoản mới, tôi có thể đăng nhập vào hồ sơ của bạn và tạo mã thông báo. Tôi phải lưu mã thông báo này ở nơi khác, vì bạn sẽ không thấy nó nữa
Bây giờ, tôi đã sẵn sàng tải gói lên Kho lưu trữ thử nghiệm. Tôi cài đặt gói
# package_template0, sẽ được sử dụng để tải lên
A Template to build a PIP package## Authors- [@alod83][//www.github.com/alod83]## InstallationInstall my-project with pip```bash
pip install package_template
```## Requirements* numpy
from numpy.random import seed0
from numpy.random import randdef p1_sum[a, s = 1]:
seed[s]
b = rand[1]
return a + b
Sau đó, tôi nhập thư mục gốc của thư mục gói của mình và tôi chạy lệnh này
from numpy.random import seed1
from numpy.random import randdef p1_sum[a, s = 1]:
seed[s]
b = rand[1]
return a + b
Lệnh này sẽ nhắc nhập tên người dùng và mật khẩu. Sử dụng
# package_template1làm tên người dùng và mã thông báo của bạn làm mật khẩu
A Template to build a PIP package## Authors- [@alod83][//www.github.com/alod83]## InstallationInstall my-project with pip```bash
pip install package_template
```## Requirements* numpy
Khi quy trình hoàn tất, một URL sẽ xuất hiện, chỉ định nơi gói của bạn được cài đặt
Cài đặt gói đã triển khaiTrước khi cài đặt gói triển khai mới, tôi thực sự khuyên bạn nên tạo một env ảo. Bạn có thể làm theo hướng dẫn nhanh này để xây dựng một env ảo mới
Gói đã triển khai có thể được cài đặt thông qua lệnh sau
from numpy.random import seed2
from numpy.random import randdef p1_sum[a, s = 1]:
seed[s]
b = rand[1]
return a + b
Bây giờ bạn có thể tạo tập lệnh Python mới để khai thác gói đã triển khai mới
from numpy.random import seed3Triển khai cuối cùng
from numpy.random import randdef p1_sum[a, s = 1]:
seed[s]
b = rand[1]
return a + b
Sau khi kiểm tra tính chính xác của gói, tôi có thể tải nó lên kho lưu trữ Chỉ mục gói Python
Tôi phải chọn một tên ban đầu, đây sẽ là tên chính thức của gói hàng của tôi
Tôi phải đăng ký trang web Python Package Index chính thức. Sau đó, tôi chạy lệnh sau, từ thư mục gốc của gói của tôi
from numpy.random import seed4
from numpy.random import randdef p1_sum[a, s = 1]:
seed[s]
b = rand[1]
return a + b
Tôi nhập thông tin đăng nhập của mình và nhấn enter. Sau khi thủ tục hoàn tất, gói đã sẵn sàng để mọi người trên thế giới cài đặt. ]
Tóm lượcTrong hướng dẫn này, tôi đã minh họa cách chuyển đổi dự án Python thành gói Python có sẵn cho tất cả cộng đồng Python trong Chỉ mục gói Python
Thủ tục khá đơn giản. chỉ cần tổ chức thư mục dự án thành một cấu trúc nhất định và chạy một số lệnh Python đơn giản để xây dựng bản phân phối là đủ