Namespace Package ใน Python ช่วยกระจายโค้ดไปอยู่ในหลายโปรเจกต์แยกกัน เหมาะสำหรับปล่อยไลบรารีที่เกี่ยวข้องกันเป็นชิ้นส่วนแยกกัน (Separate Distributions)
โครงสร้างตัวอย่าง
Package-1/namespace/__init__.py
Package-1/namespace/module1/__init__.py
Package-2/namespace/__init__.py
Package-2/namespace/module2/__init__.py
ผู้ใช้สามารถ import ได้ทั้ง namespace.module1 และ namespace.module2 แม้มาจากแพ็กเกจต่างกัน
Python 3.3+ (Implicit Namespace Packages)
ไม่ต้องทำอะไรเพิ่มเติม แค่ อย่าสร้าง __init__.py ในไดเรกทอรีของ namespace package Python จะจัดการให้อัตโนมัติ
Python เก่ากว่า 3.3 (ใช้ pkgutil)
ใส่โค้ดต่อไปนี้ใน __init__.py ของทุกแพ็กเกจที่อยู่ใน namespace เดียวกัน:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
โค้ดนี้จะเพิ่มไดเรกทอรีย่อยทั้งหมดที่ชื่อตรงกับแพ็กเกจเข้าไปใน __path__ ทำให้ import ได้ข้ามแพ็กเกจ