with the next directory in the search path if none of the above was foundthe scan continues with the next directory in the search path if the search path scan completes without returning module or package by steps or and at least one directory was recorded by step then namespace package is created the creation of the namespace package happens immediatelyand is not deferred until sublevel import occurs the new namespace package has __path__ attribute set to an iterable of the directory path strings that were found and recorded during the scan by step but does not have __file__ the __path__ attribute is then used in laterdeeper accesses to search all package components--each recorded entry on namespace package' __path__ is searched whenever further nested items are requestedmuch like the sole directory of regular package viewed another waythe __path__ attribute of namespace package serves the same role for lower-level components that sys path does at the top for the leftmost component of package import pathsit becomes the "parent pathfor accessing lower items using the same four-step procedure just sketched the net result is that namespace package is sort of virtual concatenation of directories located via multiple sys path entries once namespace package is createdthoughthere is no functional difference between it and regular packageit supports everything we've learned for regular packagesincluding package-relative import syntax impacts on regular packagesoptional __init__ py as one consequence of this new import procedureas of python packages no longer require __init__ py files--when single-directory package does not have this fileit will be treated as single-directory namespace packageand no warning will be issued this is major relaxation of prior rulesbut commonly requested changemany packages require no initialization codeand it seemed extraneous to have to create an empty initialization file in such cases this is finally no longer required as of at the same timethe original regular package model is still fully supportedand automatically runs code in __init__ py as before as an initialization hook moreoverwhen it' known that package will never be portion of split namespace packagethere is performance advantage to coding it as regular package with an __init__ py creation and loading of regular package occurs immediately when it is located along the path with namespace packagesall entries in the path must be scanned before the package is created more formallyregular packages stop the prior section' algorithm at step namespace packages do not module packages