Làm cách nào để đóng gói một ứng dụng python để nó có thể cài đặt được bằng pip?


95

Tôi đang viết một ứng dụng django trong thời gian rảnh rỗi của mình cho một cuộc thi hấp dẫn mà chúng tôi đang tổ chức tại nơi làm việc. Tôi nghĩ rằng tôi sẽ sử dụng thời gian này một cách khôn ngoan và bắt kịp tốc độ trên virtualenv, pip, pack, django 1.3 và cách viết một ứng dụng có thể phân phối lại dễ dàng. Càng xa càng tốt.

Tôi đến phần đóng gói. Ví dụ, rất nhiều ứng dụng django trên GitHub chủ yếu được đóng gói (đại khái) theo cùng một cách. Tôi sẽ sử dụng django-uni-form làm ví dụ.

Một giả định mà tôi đang đưa ra là MANIFEST.insetup.pylà những phần bắt buộc duy nhất mà pip cần để thực hiện công việc của nó. Đúng không? Những thành phần nào khác là cần thiết nếu giả định của tôi là sai?

Các tệp đóng gói bắt buộc thường được tạo ra hay chúng được tạo thủ công? Các phụ thuộc có thể được mô tả và sau đó cũng được cài đặt không? Ứng dụng của tôi phụ thuộc vào django-uni-formsvà tôi đã liệt kê nó trong một requirements.txttệp trong ứng dụng của mình mà tôi đã sử dụng để cài đặt phần phụ thuộc; nhưng đó có phải là thứ mà hệ thống đóng gói có thể đảm nhận?

Các bước tôi cần làm theo là gì để đóng gói ứng dụng của mình theo cách mà pip có thể cài đặt nó và bất kỳ phụ thuộc nào?

Câu trả lời:


88

Có, MANIFEST.insetup.pyphải đủ.

Bài đăng trên blog này thực sự có một số thông tin tốt về chủ đề này: Đóng gói một ứng dụng có thể tái sử dụng Django

Và đây là một tổng quan tốt, chi tiết khác đã giúp tôi rất nhiều: Hướng dẫn sử dụng đóng gói Python

Đặc biệt là các mẹo để bao gồm các tệp tĩnh (mẫu) của bạn rất quan trọng vì điều này có thể không rõ ràng lúc đầu.

Và có, bạn có thể chỉ định các gói bắt buộc trong setup.pyđó được tự động tìm nạp khi cài đặt ứng dụng của bạn.

Ví dụ:

    install_requires = [
        'django-profiles',
        'django-uni-forms',
    ],

Rõ ràng bây giờ chúng ta có hai nơi mà các phụ thuộc được xác định, nhưng điều đó không nhất thiết có nghĩa là những thông tin này bị trùng lặp: setup.py so với request.txt

Với thiết lập này, gói của bạn có thể được cài đặt thông qua pip.


Như Pierre đã lưu ý trong các nhận xét, giờ đây cũng có một phần liên quan trong tài liệu chính thức của Django: Đóng gói ứng dụng của bạn

Và sau đó là hướng dẫn "hoàn toàn chưa hoàn chỉnh" này, thực sự mang lại cái nhìn tổng quan tuyệt vời về việc đóng gói và tải một gói hàng lên PyPI: Chia sẻ sức lao động tình yêu của bạn: PyPI Nhanh chóng và Bẩn thỉu


4
Ngoài ra hiện nay là một phần giải thích thế nào để đóng gói một ứng dụng Django trong các tài liệu chính thức
Pierre de LESPINAY
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.