Accessing code from other modules
We'll start off this section by understanding the difference between absolute and relative imports, then move on to writing those, and finally, we'll look at cyclic dependencies.
When we are importing one of the package's modules from outside the package, there's only one sensible way that it could work-we tell Python which package and module we want, and it either finds and imports it or raises an exception if it can't. Simple!
import packagename.modulename
When we're already inside a package, the situation is more ambiguous because import name
could just as easily mean "look for name
within this package" or "look for name
in the Python search path." Python breaks this ambiguity by defining import name
to mean that a package or module called name should be searched for in Python's search path:
import name
Also, it also gives us a way to specify a relative import
if we'd rather have it just look within the current package. We can specify a relative import...