Để hiểu package, cần biết về module. Bất kỳ file Python nào là module, tên là base name file / property __name__ của module không có extension .py. Package là tập hợp module Python, tức là thư mục chứa module Python kèm file __init__.py thêm. File __init__.py phân biệt package với thư mục chỉ chứa bunch script Python. Package có thể nest độ sâu bất kỳ, miễn thư mục tương ứng chứa __init__.py riêng.
Khi import module hoặc package, object tạo bởi Python luôn type module. Nghĩa là sự khác biệt module vs package chỉ ở file system level. Lưu ý: khi import package, chỉ variable/function/class trong __init__.py của package đó visible trực tiếp, không phải sub-package hay module.
Ví dụ, module datetime có submodule date. Khi import datetime, nó không được import. Cần import riêng:
>>> import datetime >>> date.today() Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'date' is not defined >>> from datetime import date >>> date.today() datetime.date(2017, 9, 1)