Địa chỉ bưu chính trăn

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 gói đó lên Chỉ mục gói Python [PyPI]

Mẹo

Nếu bạn gặp sự cố khi 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ữ các vấn đề về đóng gói trên GitHub. Chúng tôi sẽ cố gắng hết sức để giúp bạn

Một số lệnh yêu cầu phiên bản mới hơn của , vì vậy hãy bắt đầu bằng cách đảm bảo rằng bạn đã cài đặt phiên bản mới nhất

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ản

Hướng dẫn này sử dụng một dự án đơn giản tên là

packaging_tutorial/
└── src/
    └── example_package_YOUR_USERNAME_HERE/
        ├── __init__.py
        └── example.py
8. Nếu tên người dùng của bạn là
packaging_tutorial/
└── src/
    └── example_package_YOUR_USERNAME_HERE/
        ├── __init__.py
        └── example.py
9, thì gói hàng sẽ là
def add_one[number]:
    return number + 1
0; . Chúng tôi khuyên bạn nên làm theo hướng dẫn này khi đang 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 tại địa phương

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 giúp đơ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

Cần có

def add_one[number]:
    return number + 1
1 để nhập thư mục dưới dạng gói và phải trống

def add_one[number]:
    return number + 1
2 là một ví dụ về mô-đun trong gói có thể chứa logic [hàm, lớp, hằng số, v.v. ] gói hàng 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 với Python và , hãy dành vài phút để đọc qua

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

def add_one[number]:
    return number + 1
3

Tạo các tập tin gói

Bây giờ bạn sẽ thêm các tệp được sử dụng để chuẩn bị phân phối dự án. Khi bạn hoàn thành, cấu trúc dự án sẽ như thế này

py -m pip install --upgrade pip
0

Tạo một thư mục thử nghiệm

def add_one[number]:
    return number + 1
4 là trình giữ chỗ cho các tệp thử nghiệm. Để trống bây giờ

Tạo pyproject. toml

def add_one[number]:
    return number + 1
5 cho biết các công cụ xây dựng “frontend” như thế nào và công cụ “backend” nào sẽ sử dụng để tạo cho dự án của bạn. Bạn có thể chọn từ một số phụ trợ;

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 + 1
5 và nhập một trong các bảng
def add_one[number]:
    return number + 1
8 này

nở

py -m pip install --upgrade pip
6

công cụ thiết lập

py -m pip install --upgrade pip
7

bay

py -m pip install --upgrade pip
8

PDM

py -m pip install --upgrade pip
9

  • def add_one[number]:
        return number + 1
    
    9 là danh sách các gói cần thiết để xây dựng gói của bạn. Bạn không cần cài đặt chúng;

  • py -m pip install --upgrade pip
    
    00 là tên của đối tượng Python mà giao diện người dùng sẽ sử dụng để thực hiện quá trình xây dựng

Định cấu hình siêu dữ liệu

Mở

def add_one[number]:
    return number + 1
5 và nhập nội dung sau. Thay đổi
py -m pip install --upgrade pip
02 để bao gồm tên người dùng của bạn;

packaging_tutorial/
└── src/
    └── example_package_YOUR_USERNAME_HERE/
        ├── __init__.py
        └── example.py
4

  • py -m pip install --upgrade pip
    
    02 là tên phân phối của gói của bạn. Đây có thể là bất kỳ tên nào miễn là nó chỉ chứa các chữ cái, số,
    py -m pip install --upgrade pip
    
    04,
    py -m pip install --upgrade pip
    
    05 và
    py -m pip install --upgrade pip
    
    06. Nó cũng chưa được sử dụng trên PyPI. Đảm bảo cập nhật tên người dùng này cho hướng dẫn này, vì điều này đảm bảo bạn sẽ không cố tải lên gói có cùng tên với gói đã tồn tại

  • py -m pip install --upgrade pip
    
    07 là phiên bản trọn gói. Xem để biết thêm chi tiết về các phiên bản. Một số phụ trợ xây dựng cho phép nó được chỉ định theo cách khác, chẳng hạn như từ tệp hoặc thẻ git

  • py -m pip install --upgrade pip
    
    08 được sử dụng để xác định tác giả của gói; . Bạn cũng có thể liệt kê
    py -m pip install --upgrade pip
    
    09 ở định dạng tương tự

  • py -m pip install --upgrade pip
    
    60 là một bản tóm tắt ngắn, một câu về gói

  • py -m pip install --upgrade pip
    
    61 là đường dẫn đến tệp chứa mô tả chi tiết về gói. Điều này được hiển thị trên trang chi tiết gói trên PyPI. Trong trường hợp này, mô tả được tải từ
    py -m pip install --upgrade pip
    
    62 [là một mẫu phổ biến]. Ngoài ra còn có một dạng bảng nâng cao hơn được mô tả trong

  • py -m pip install --upgrade pip
    
    63 cung cấp các phiên bản Python được dự án của bạn hỗ trợ. Những người cài đặt như vậy sẽ xem lại các phiên bản gói cũ hơn cho đến khi tìm thấy gói có phiên bản Python phù hợp

  • py -m pip install --upgrade pip
    
    64 cung cấp chỉ mục và một số siêu dữ liệu bổ sung về gói của bạn. Trong trường hợp này, gói chỉ tương thích với Python 3, được cấp phép theo giấy phép MIT và không phụ thuộc vào hệ điều hành. Bạn phải luôn bao gồm ít nhất [các] phiên bản Python mà gói của bạn hoạt động, gói của bạn có sẵn giấy phép nào và gói của bạn sẽ hoạt động trên hệ điều hành nào. Để biết danh sách đầy đủ các bộ phân loại, hãy xem https. //pypi. tổ chức/phân loại/

  • py -m pip install --upgrade pip
    
    65 cho phép bạn liệt kê bất kỳ số lượng liên kết bổ sung nào để hiển thị trên PyPI. Nói chung, điều này có thể là nguồn, tài liệu, trình theo dõi vấn đề, v.v.

Xem 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 + 1
6. Các trường phổ biến khác là
py -m pip install --upgrade pip
67 để cải thiện khả năng khám phá và
py -m pip install --upgrade pip
68 được yêu cầu để cài đặt gói của bạn

Tạo README. md

Mở

py -m pip install --upgrade pip
62 và nhập nội dung sau. Bạn có thể tùy chỉnh điều này nếu bạn muốn

py -m pip install --upgrade pip
0

Tạo GIẤY PHÉP

Điều quan trọng đối với mọi gói được tải lên Chỉ mục gói Python phải 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 biết các điều khoản mà theo đó 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. //chọn giấy phép. com/. Khi bạn đã chọn một giấy phép, hãy mở

py -m pip install --upgrade pip
70 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 pip
1

Hầu hết các chương trình 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ác

Các tệp được liệt kê ở trên sẽ được tự động đưa vào. Nếu bạn muốn bao gồm các tệp bổ sung, hãy xem tài liệu dành cho chương trình phụ trợ xây dựng của bạn

Tạo kho lưu trữ phân phối

Bước tiếp theo là tạo cho gói. Đây là những kho lưu trữ được tải lên Chỉ mục gói Python và có thể được cài đặt bởi

Đảm bảo bạn đã cài đặt phiên bản mới nhất của PyPA

Unix/macOS

py -m pip install --upgrade pip
2

các cửa sổ

py -m pip install --upgrade pip
3

Mẹo

Nếu bạn gặp sự cố khi cài đặt các gói này, hãy xem hướng dẫn Cài đặt gói .

Bây giờ hãy chạy lệnh này từ cùng thư mục chứa

def add_one[number]:
    return number + 1
5

Unix/macOS

py -m pip install --upgrade pip
4

các cửa sổ

py -m pip install --upgrade pip
5

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

py -m pip install --upgrade pip
72

py -m pip install --upgrade pip
6

Tệp

py -m pip install --upgrade pip
73 là tệp trong khi tệp
py -m pip install --upgrade pip
74 là tệp. Các phiên bản mới hơn ưu tiên cài đặt các bản phân phối được xây dựng, nhưng sẽ quay trở lại các bản phân phối nguồn nếu cần. Bạn phải luôn tải lên bản phân phối nguồn và cung cấp 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 với. 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 mọi nền tảng nên chỉ cần một bản phân phối được xây dựng

Tải lên kho lưu trữ phân phối

Cuối cùng, đã đến lúc 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 phiên bản riêng biệt của chỉ mục gói dành cho kiểm tra và thử nghiệm. Thật tuyệt vời cho những thứ như hướng dẫn này mà chúng tôi không nhất thiết muốn tải lên chỉ mục thực. Để đăng ký tài khoản, hãy truy cập https. //kiểm tra. 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 có thể tải lên bất kỳ gói nào. Để biết thêm chi tiết, hãy xem Sử dụng TestPyPI .

Để tải lên dự án của bạn một cách an toàn, bạn sẽ cần một PyPI. Tạo một tài khoản tại , đặt “Phạm vi” thành “Toàn bộ tài khoản”. Không đóng trang cho đến khi bạn đã sao chép và lưu mã thông báo — bạn sẽ không thấy mã thông báo đó nữa

Bây giờ bạn đã đăng ký, bạn có thể sử dụng để tải lên các gói phân phối. Bạn sẽ cần cài đặt Twine

Unix/macOS

py -m pip install --upgrade pip
7

các cửa sổ

py -m pip install --upgrade pip
8

Sau khi cài đặt, hãy chạy Twine để tải lên tất cả các tệp lưu trữ trong

py -m pip install --upgrade pip
72

Unix/macOS

py -m pip install --upgrade pip
9

các cửa sổ

packaging_tutorial/
└── src/
    └── example_package_YOUR_USERNAME_HERE/
        ├── __init__.py
        └── example.py
0

Bạn sẽ được nhắc nhập tên người dùng và mật khẩu. Đối với tên người dùng, hãy sử dụng

py -m pip install --upgrade pip
76. Đối với mật khẩu, hãy sử dụng giá trị mã thông báo, bao gồm tiền tố
py -m pip install --upgrade pip
77

Sau khi lệnh hoàn thành, bạn sẽ thấy đầu ra tương tự như thế này

packaging_tutorial/
└── src/
    └── example_package_YOUR_USERNAME_HERE/
        ├── __init__.py
        └── example.py
1

Sau khi tải lên, gói của bạn sẽ có thể xem được trên TestPyPI; .

py -m pip install --upgrade pip
78

Cài đặt gói mới tải lên của bạn

Bạn có thể sử dụng để cài đặt gói của mình và xác minh rằng nó hoạt động. Tạo và cài đặt gói của bạn từ TestPyPI

Unix/macOS

packaging_tutorial/
└── src/
    └── example_package_YOUR_USERNAME_HERE/
        ├── __init__.py
        └── example.py
2

các cửa sổ

packaging_tutorial/
└── src/
    └── example_package_YOUR_USERNAME_HERE/
        ├── __init__.py
        └── example.py
3

Đảm bảo chỉ định tên người dùng của bạn trong tên gói

pip nên cài đặt gói từ TestPyPI và đầu ra sẽ trông giống như thế này

packaging_tutorial/
└── src/
    └── example_package_YOUR_USERNAME_HERE/
        ├── __init__.py
        └── example.py
4

Ghi chú

Ví dụ này sử dụng cờ

py -m pip install --upgrade pip
79 để chỉ định TestPyPI thay vì PyPI trực tiếp. Ngoài ra, nó chỉ định
py -m pip install --upgrade pip
80. Vì TestPyPI không có các gói giống như PyPI trực tiếp, nên có thể cố gắng cài đặt các phần phụ thuộc có thể không thành công hoặc cài đặt thứ gì đó không mong muốn. Mặc dù gói ví dụ của chúng tôi không có bất kỳ phần phụ thuộc nào, nhưng bạn nên tránh cài đặt các phần phụ thuộc khi sử dụng TestPyPI

Bạn có thể kiểm tra xem nó đã được cài đặt đúng chưa bằng cách nhập gói. Đảm bảo rằng bạn vẫn đang ở trong môi trường ảo của mình, sau đó chạy Python

Unix/macOS

packaging_tutorial/
└── src/
    └── example_package_YOUR_USERNAME_HERE/
        ├── __init__.py
        └── example.py
5

các cửa sổ

packaging_tutorial/
└── src/
    └── example_package_YOUR_USERNAME_HERE/
        ├── __init__.py
        └── example.py
6

và nhập gói

packaging_tutorial/
└── src/
    └── example_package_YOUR_USERNAME_HERE/
        ├── __init__.py
        └── example.py
7

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 gói của bạn lên Test PyPI, đây không phải là bộ lưu trữ vĩnh viễn. Hệ thống Kiểm tra thỉnh thoảng xóa các gói và tài khoản. Tốt nhất là sử dụng TestPyPI để kiểm tra và thử nghiệm như hướng dẫn này

Khi bạn đã sẵn sàng tải một gói thực lên Chỉ mục gói Python, bạn có thể làm nhiều việc tương tự như bạn đã làm trong hướng dẫn này, nhưng với những điểm khác biệt quan trọng sau

  • Chọn một tên đáng nhớ và độc đáo cho gói của bạn. Bạn không phải thêm tên người dùng của mình như đã làm trong hướng dẫn, nhưng bạn không thể sử dụng tên hiện có

  • Đăng ký tài khoản trên https. //pypi. org - lưu ý rằng đây là hai máy chủ riêng biệt và chi tiết đăng nhập từ máy chủ thử nghiệm không được chia sẻ với máy chủ chính

  • Sử dụng

    py -m pip install --upgrade pip
    
    81 để tải gói của bạn lên và nhập thông tin đăng nhập cho tài khoản bạn đã đăng ký trên PyPI thực. Bây giờ bạn đang tải lên gói trong quá trình sản xuất, bạn không cần chỉ định
    py -m pip install --upgrade pip
    
    82; . //pypi. org/ theo mặc định

  • Cài đặt gói của bạn từ PyPI thực bằng cách sử dụng

    py -m pip install --upgrade pip
    
    83

Tại thời điểm này, nếu bạn muốn đọc thêm về cách đóng gói các thư viện Python thì đây là một số điều bạn có thể làm

  • Xem xét các công cụ đóng gói cung cấp một giao diện dòng lệnh duy nhất để quản lý và đóng gói dự án, chẳng hạn như , , và

Chủ Đề