Phát triển gói Python của riêng bạn

Trong bài viết này, chúng ta sẽ tìm hiểu cách phát triển gói trong Python. Các gói không là gì ngoài một tập hợp các chương trình được thiết kế để thực hiện một [các] nhiệm vụ nhất định. Các gói có hai loại, cụ thể là

  • Các gói tích hợp như bộ sưu tập, datetime, sqlite, v.v.
  • Các gói bên ngoài như bình, django, tensorflow, v.v.

Tạo một gói

Đầu tiên, chúng ta cần nghĩ ra cách cấu trúc mã của mình để những người khác có thể truy cập các chức năng mã của chúng ta. Trong Python, để tạo một gói, chúng ta cần thêm __init__. py vào thư mục. Ở đây, chúng ta sẽ tạo một gói có tên là test_package

  • Hãy viết __init__. py

Python3




package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
1
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
2
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
3
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
4

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
5

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
6
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
7

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
8
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
9
pip3 install setuptools wheel
0
pip3 install setuptools wheel
1

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
8
pip3 install setuptools wheel
3
pip3 install setuptools wheel
4

  • Bây giờ, hãy tạo một thư mục có tên là test_package, và trong đó giữ __init__. tập tin py. Đó là tất cả, gói của chúng tôi đã sẵn sàng. Tất cả gói của chúng tôi đều đếm số lần xuất hiện của một từ trong danh sách. Bây giờ, để sử dụng gói của chúng tôi, hãy tạo một lần chạy. py bên ngoài thư mục test_package. Bên trong đường chạy. py chỉ cần nhập gói vừa tạo và sử dụng hàm đếm_in_list. Chúng ta có thể viết mã như hình dưới đây

Python3




package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
1
pip3 install setuptools wheel
6
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
3
pip3 install setuptools wheel
8

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
5

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
90
pip3 install setuptools wheel
0
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
92
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
93
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
94
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
95
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
94
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
93
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
98

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
99
pip3 install setuptools wheel
0
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
01
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
93
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
03

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
04
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
05

  • Đó là tất cả. Chúng tôi vừa tạo gói đầu tiên của mình. Cấu trúc thư mục của chúng ta sẽ giống như thế này
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
5

Để kiểm tra, chỉ cần gõ python3 run. py. Và đầu ra của chúng tôi sẽ như sau

Theo cách này, chúng ta có thể tạo nhiều chương trình phức tạp và sử dụng chúng trong các mã khác

Tải lên gói của chúng tôi

Bây giờ, hãy xem cách chúng tôi có thể chuẩn bị gói của mình để triển khai trên PyPI. Chúng tôi cần một số tệp bổ sung trong thư mục gói của mình, như README. MD, GIẤY PHÉP và thiết lập. py. Mã của chúng tôi nên được cấu trúc như dưới đây

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files

Đảm bảo xóa lần chạy đã tạo trước đó. py, nó chỉ dành cho thử nghiệm thủ công. Đối với GIẤY PHÉP, chúng tôi khuyên bạn nên sử dụng GIẤY PHÉP MIT vì nó mang lại sự linh hoạt nhất. Chúng ta có thể đọc về nhiều loại giấy phép trực tuyến

Tiếp theo, tạo README. tập tin md. Về cơ bản, nó sẽ chứa một mô tả đầy đủ về gói. Nếu chúng ta chưa quen với cách viết theo phong cách markdown, chúng tôi khuyên bạn nên đọc bài viết này. Một lần, chúng tôi có README của bạn. md đã sẵn sàng, chúng ta cần viết thiết lập. py. đây là phần quan trọng nhất

Python3




package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
3
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
07

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
5

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
09
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
10____411
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
12
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
94
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
14
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
15

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
16______417
pip3 install setuptools wheel
0
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
19

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
5

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
21

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
16
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
23____90
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
25
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
94

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
16____528____90
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
10
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
94

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
16____613____90
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
15
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
94

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
16____618
pip3 install setuptools wheel
0
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
10
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
94

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
16______713____90
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
92
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
16
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
17

_______416____417____90

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
21
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
94

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
16______824____90
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
26

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
16______828
pip3 install setuptools wheel
0
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
00
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
94

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
16
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
03______90
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
05
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
94

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
16______008
pip3 install setuptools wheel
0
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
10
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
94

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
16______013____90
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
15
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
94

_______416____018____90

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
20

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
03

Trong đoạn mã trên, bạn cần thay đổi

  • tác giả với tên của bạn
  • author_email  bằng email của bạn
  • url với URL GitHub của gói

Gói của chúng tôi đã sẵn sàng

Đăng ký gói của chúng tôi với PyPI

Bây giờ chúng tôi đã phát triển gói python của mình, chúng tôi cần đăng ký gói đó trên PyPI

1. Tải lên GitHub

Tạo một kho lưu trữ GitHub mới và đẩy tất cả mã của chúng tôi vào đó. Nếu bạn chưa biết cách đẩy mã lên repo GitHub, bạn có thể xem qua bài viết này. Ngoài ra, đừng quên cập nhật URL của chúng tôi trong phần thiết lập. py với URL repo GitHub mới được tạo. Repo của chúng tôi nên được truy cập công khai

2. Tạo một tài khoản trong PyPI

Chúng tôi sẽ xuất bản gói trong PyPI, chúng tôi cần một tài khoản. Để làm điều đó, chỉ cần truy cập PyPI và tạo tài khoản của bạn

3. Tạo bản phân phối

Lưu trữ phân phối là cần thiết để lưu trữ nó dưới dạng gói. Để tạo các gói này, chúng tôi cần cài đặt hai gói bổ sung

pip3 install setuptools wheel

Bây giờ chúng tôi đã cài đặt chúng, hãy chạy lệnh bên dưới để tạo tệp lưu trữ

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
9

Nó sẽ tạo các thư mục build, dist, test_package. trứng-thông tin. Bây giờ cấu trúc thư mục của bạn sẽ giống như thế này

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
0

4. Triển khai

Để tải lên PyPI, chúng tôi cần cài đặt gói sợi xe

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
1

Bây giờ, hãy tải lên gói có phiên bản phù hợp được xác định trong phần thiết lập. tập tin py. Để làm như vậy, hãy chạy lệnh dưới đây

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
2

Đó là tất cả về việc phát triển và triển khai các gói trong python

Sử dụng gói của chúng tôi

Khi gói được phát triển, chúng ta sẽ có thể sử dụng nó phải không? . Tạo một thư mục hoàn toàn mới và tạo một môi trường ảo bên trong nó. Để như vậy, chỉ cần gõ

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
1

Bây giờ, hãy cài đặt gói mới được triển khai của bạn vào môi trường ảo. Bạn cần sử dụng pip để có thể cài đặt nó

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
1

Bây giờ, hãy xem cách chúng ta có thể sử dụng gói này trong mã của mình. ý tưởng thật đơn giản. Đây là sau khi tất cả một gói, phải không?

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
2

Bây giờ, chúng tôi có chức năng của chúng tôi. Hãy thử sử dụng nó

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
0

Đó là tất cả. Nếu chúng ta đặt tất cả lại với nhau,

Python3




package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
1
pip3 install setuptools wheel
6
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
3
pip3 install setuptools wheel
8

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
5

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
04
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
28
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
93
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
94
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
95
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
94
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
93
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
17
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
46
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
36
package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files
48

Chủ Đề