Chapter 24. Module Packages
So far, when we’ve imported modules, we’ve been loading files. This represents typical module usage, and it’s probably the technique you’ll use for most imports you’ll code, especially early in your Python career. The module import story, though, is richer than implied up to this point. This chapter extends it to present module packages—collections of module files that normally correspond to folders (a.k.a. directories) on your device. It covers four topics:
Package imports, which give part of a folder path leading to a file
Packages themselves, which organize modules into folder bundles
Package-relative imports, which use dots within a package to limit search
Namespace packages, which build a package that may span multiple folders
As you’ll find, a package import turns a folder on your computer into another Python namespace, with attributes corresponding to the module files and subfolders that the folder contains. As you’ll also learn, package imports are sometimes required to resolve ambiguity when multiple program files of the same name are installed on a device.
Packages are a somewhat advanced topic, which many readers can defer until they gain experience with file-based modules. That said, packages provide an easy way to organize code files that avoids same-name conflicts and is employed by many standard-library and third-party tools that you’ll be using. While packages, like much in Python, have grown convoluted over time, a basic knowledge ...