Commit 94a98e4f authored by Nick Coghlan's avatar Nick Coghlan

Update the tutorial section on relative imports

parent 56829d5b
...@@ -2919,14 +2919,13 @@ submodules with the same name from different packages. ...@@ -2919,14 +2919,13 @@ submodules with the same name from different packages.
The submodules often need to refer to each other. For example, the The submodules often need to refer to each other. For example, the
\module{surround} module might use the \module{echo} module. In fact, \module{surround} module might use the \module{echo} module. In fact,
such references such references are so common that the \keyword{import} statement
are so common that the \keyword{import} statement first looks in the first looks in the containing package before looking in the standard
containing package before looking in the standard module search path. module search path. Thus, the \module{surround} module can simply use
Thus, the surround module can simply use \code{import echo} or \code{import echo} or \code{from echo import echofilter}. If the
\code{from echo import echofilter}. If the imported module is not imported module is not found in the current package (the package of
found in the current package (the package of which the current module which the current module is a submodule), the \keyword{import}
is a submodule), the \keyword{import} statement looks for a top-level statement looks for a top-level module with the given name.
module with the given name.
When packages are structured into subpackages (as with the When packages are structured into subpackages (as with the
\module{Sound} package in the example), there's no shortcut to refer \module{Sound} package in the example), there's no shortcut to refer
...@@ -2936,6 +2935,24 @@ must be used. For example, if the module ...@@ -2936,6 +2935,24 @@ must be used. For example, if the module
in the \module{Sound.Effects} package, it can use \code{from in the \module{Sound.Effects} package, it can use \code{from
Sound.Effects import echo}. Sound.Effects import echo}.
Starting with Python 2.5, in addition to the implicit relative imports
described above, you can write explicit relative imports with the
\code{from module import name} form of import statement. These explicit
relative imports use leading dots to indicate the current and parent
packages involved in the relative import. From the \module{surround}
module for example, you might use:
\begin{verbatim}
from . import echo
from .. import Formats
from ..Filters import equalizer
\end{verbatim}
Note that both explicit and implicit relative imports are based on the
name of the current module. Since the name of the main module is always
\code{"__main__"}, modules intended for use as the main module of a
Python application should always use absolute imports.
\subsection{Packages in Multiple Directories} \subsection{Packages in Multiple Directories}
Packages support one more special attribute, \member{__path__}. This Packages support one more special attribute, \member{__path__}. This
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment