From 8c2da61811e3f6aa50859d656b7c2f0ac58226f3 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Fri, 4 Dec 1998 15:32:17 +0000 Subject: [PATCH] Add explicit example on how to import a submodule of a package using __import__ and getattr(). --- Doc/lib/libfuncs.tex | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Doc/lib/libfuncs.tex b/Doc/lib/libfuncs.tex index d7ee837063f..466351d1835 100644 --- a/Doc/lib/libfuncs.tex +++ b/Doc/lib/libfuncs.tex @@ -44,6 +44,21 @@ using \samp{import spam.ham.eggs}, the top-level package \code{spam} must be placed in the importing namespace, but when using \samp{from spam.ham import eggs}, the \code{spam.ham} subpackage must be used to find the \code{eggs} variable. +As a workaround for this behavior, use \function{getattr()} to extract +the desired components. For example, you could define the following +helper: + +\begin{verbatim} +import string + +def my_import(name): + mod = __import__(name) + components = string.split(name, '.') + for comp in components[1:]: + mod = getattr(mod, comp) + return mod +\end{verbatim} + \end{funcdesc} \begin{funcdesc}{abs}{x}