as something of fallback optionrecognized only if normal modules and regular packages of the same name are not present on the module search path the rationale for namespace packages is rooted in package installation goals that may seem obscure unless you are responsible for such tasksand is better addressed by this feature' pep document in shortthoughthey resolve potential for collision of multiple __init__ py files when package parts are mergedby removing this file completely moreoverby providing standard support for packages that can be split across multiple directories and located in multiple sys path entriesnamespace packages both enhance install flexibility and provide common mechanism to replace the multiple incompatible solutions that have arisen to address this goal though too early to judge their uptakeaverage python users may find namespace packages to be useful and alternative extension to the regular package model--one that does not require initialization filesand allows any directory of code to be used as an importable package to see whylet' move on to the details namespace package semantics namespace package is not fundamentally different from regular packageit is just different way of creating packages moreoverthey are still relative to sys path at the top levelthe leftmost component of dotted namespace package path must still be located in an entry on the normal module search path in terms of physical structurethoughthe two can differ substantially regular packages still must have an __init__ py file that is run automaticallyand reside in single directory as before by contrastnew-style namespace packages cannot contain an __init__ pyand may span multiple directories that are collected at import time in factnone of the directories that make up namespace package can have an __init__ pybut the content nested within each of them is treated as single package the import algorithm to truly understand namespace packageswe have to look under the hood to see how the import operation works in during importspython still iterates over each directory in the module search pathsys pathjust as in and earlier in thoughwhile looking for an imported module or package named spamfor each directory in the module search pathpython tests for wider variety of matching criteriain the following order if directory\spam\__init__ py is founda regular package is imported and returned if directory\spam {pypycor other module extensionis founda simple module is imported and returned python namespace packages