ฉันจะรวมแอปพลิเคชัน python เพื่อให้ติดตั้ง pip ได้อย่างไร


95

ฉันกำลังเขียนแอปพลิเคชัน django ในเวลาว่างสำหรับการแข่งขันการให้ทิปที่เรากำลังดำเนินการอยู่ ฉันคิดว่าฉันจะใช้เวลานี้อย่างชาญฉลาดและเร่งความเร็วกับ Virtualenv, pip, packaging, django 1.3 และวิธีเขียนแอปพลิเคชันที่แจกจ่ายต่อได้อย่างง่ายดาย จนถึงตอนนี้ดีมาก

ฉันขึ้นอยู่กับส่วนบรรจุภัณฑ์ แอพ django จำนวนมากบน GitHub นั้นส่วนใหญ่รวม (โดยประมาณ) ในลักษณะเดียวกัน ฉันจะใช้django-uni-formเป็นตัวอย่าง

สมมติฐานที่ฉันทำก็คือMANIFEST.inและsetup.pyมีชิ้นส่วนที่จำเป็นเท่านั้นที่ตอบสนองความต้องการ pip ที่จะทำในงานของตน ถูกต้องหรือไม่ ส่วนประกอบอื่น ๆ ที่จำเป็นหากข้อสันนิษฐานของฉันผิด?

โดยทั่วไปแล้วไฟล์บรรจุภัณฑ์ที่จำเป็นจะถูกสร้างขึ้นหรือไม่หรือสร้างขึ้นด้วยมือ? สามารถอธิบายการอ้างอิงแล้วติดตั้งได้หรือไม่? แอปพลิเคชันของฉันขึ้นอยู่กับdjango-uni-formsและฉันมีรายการอยู่ในrequirements.txtไฟล์ภายในแอปของฉันซึ่งฉันใช้ในการติดตั้งการอ้างอิง แต่นั่นเป็นสิ่งที่ระบบบรรจุภัณฑ์สามารถดูแลได้หรือไม่?

ฉันต้องทำตามขั้นตอนใดบ้างเพื่อจัดแพ็กเกจแอปพลิเคชันของฉันในลักษณะที่ pip จะสามารถติดตั้งและการอ้างอิงใด ๆ

คำตอบ:


88

ใช่MANIFEST.inและsetup.pyควรเพียงพอ

โพสต์บล็อกนี้มีข้อมูลที่ดีเกี่ยวกับหัวข้อนี้: บรรจุแอป Django ที่ใช้ซ้ำได้

และนี่คือภาพรวมโดยละเอียดที่ดีอีกอย่างที่ช่วยฉันได้มาก: คู่มือผู้ใช้ Python Packaging

โดยเฉพาะอย่างยิ่งเคล็ดลับในการรวมไฟล์แบบคงที่ (เทมเพลต) ของคุณมีความสำคัญเนื่องจากอาจไม่ชัดเจนในตอนแรก

และใช่คุณสามารถระบุแพ็กเกจที่ต้องการsetup.pyซึ่งจะดึงโดยอัตโนมัติเมื่อติดตั้งแอปของคุณ

ตัวอย่างเช่น:

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

เห็นได้ชัดว่าตอนนี้เรามีสถานที่สองแห่งที่กำหนดการอ้างอิง แต่นั่นไม่ได้หมายความว่าข้อมูลเหล่านี้จะซ้ำกัน: setup.py vs requirements.txt

ด้วยการตั้งค่านี้แพ็คเกจของคุณควรติดตั้งผ่านทางpip.


ดังที่ปิแอร์ระบุไว้ในความคิดเห็นขณะนี้ยังมีส่วนที่เกี่ยวข้องในเอกสารอย่างเป็นทางการของ Django: บรรจุแอปของคุณ

จากนั้นก็มีคำแนะนำที่ "ไม่สมบูรณ์" ซึ่งจะให้ภาพรวมที่ดีเกี่ยวกับบรรจุภัณฑ์และการอัปโหลดแพ็คเกจไปยัง PyPI: Sharing Your Labor of Love: PyPI Quick And Dirty


4
นอกจากนี้ยังมีส่วนที่อธิบายวิธีการแพคเกจแอป Djangoในเอกสารอย่างเป็นทางการ
Pierre de LESPINAY
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.