คำตอบที่ดีที่สุดสำหรับคำถามนี้ได้รับจาก Andrew Godwin (ผู้พัฒนาหลักของ Django):
จุดประสงค์หลักของแอพคือในสายตาของฉันเพื่อให้การแยกส่วนประกอบที่ใช้ซ้ำได้อย่างมีเหตุผลโดยเฉพาะอย่างยิ่งเนมสเปซชั้นหนึ่งสำหรับโมเดล / ผู้ดูแลระบบ / ฯลฯ - และเพื่อเป็นวิธีง่ายๆในการ "เปิด" หรือ "ปิด"
ในบางวิธีมันเป็นของที่ระลึกในช่วงเวลาที่ Django ถูกสร้างขึ้น - เมื่อบรรจุภัณฑ์และโมดูล Python ได้รับการพัฒนาน้อยกว่ามากและโดยพื้นฐานแล้วคุณต้องมีวิธีแก้ปัญหาของคุณเอง ที่กล่าวว่ามันยังคงเป็นส่วนหลักของแบบจำลองทางจิตของ Django และฉันคิดว่า INSTALLED_APPS ยังคงเป็นวิธีแก้ปัญหาที่สะอาดและง่ายกว่าการเสนอจุดเข้าใช้แทนของ Python (ซึ่งทำให้ยากที่จะปิดใช้งานแพ็คเกจที่ติดตั้งในสภาพแวดล้อม แต่คุณไม่ได้ใช้ ไม่ต้องการใช้)
มีอะไรเป็นพิเศษที่คุณคิดว่าสามารถแยกออกจากแนวคิดของแอปในวันนี้ได้หรือไม่? โมเดลและผู้ดูแลระบบต้องการมันสำหรับการค้นหาอัตโนมัติและคำนำหน้าเนมสเปซที่ไม่ซ้ำใครดังนั้นจึงยากที่จะเลิกทำและฉันกำลังดิ้นรนที่จะคิดถึงคุณสมบัติอื่น ๆ ที่คุณต้องการ (อันที่จริงถ้าทั้งหมดที่คุณต้องการเป็นเพียงไลบรารีคุณสามารถทำได้ Python ปกติ - ไม่จำเป็นต้องห่อแอปเว้นแต่คุณจะจัดส่งโมเดลแม่แบบหรือรหัสผู้ดูแลระบบ IIRC)