# quetz-mod_python-dev mailing list archives

##### Site index · List index
Message view
Top
From Clodoaldo <clodoaldo.pinto.n...@gmail.com>
Subject Re: Updated documentation on apache.import_module()
Date Mon, 04 Dec 2006 10:48:09 GMT
2006/12/4, Graham Dumpleton <grahamd@dscpl.com.au>:
> Clodoaldo wrote ..
> > 2006/12/3, Graham Dumpleton <grahamd@dscpl.com.au>:
> > >
> > > Can you and anyone else who is interested, read through the
> > > documentation
> > > I have added and comment on whether it is adequate. Ie., is there
> > > anything
> > > that you can think is missing based on your own knowledge of the new
> > > importer,
> > > or anything that is particularly clear.
> > >
> >
> > This paragraph is not clear for me:
> >
> > "In this scheme for maintaining a pseudo package, individual modules
> > are still placed into a directory, but there cannot be a __init__.py
> > file in the directory. If such a file does exist, it will simply be
> > ignored."
> >
> > It says there cannot be a __init__.py  file in the directory and
> > immediately after it says that if it exists it will be ignored. What
> > will be ignored? The file or the pseudo package?
> >
> > Thinking about it the only way that the paragraph makes sense is if
> > the package is ignored but for me it is confusing at first sight.
>
> Does this make more sense?
>
>   Although true Python packages are not candidates for reloading and must
>   be located in a directory listed in \code{sys.path}, another form of
>   packaging up modules such that they can be maintained within their own
>   namespace is supported. When this mechanism is used, these modules will
>   be candidates for reloading when found by the mod_python module importer.
>
>   In this scheme for maintaining a pseudo package, individual modules are
>   still placed into a directory, but the \code{__init__.py} file in the
>   directory has no special meaning and will not be automatically imported
>   as is the case with true Python packages. Instead, any module within the
>   directory must always be explicitly identified when performing an import.
>
>   To import a named module contained within these pseudo package, rather
>   than using a '.' to distinguish a sub module from the parent, a '/' is
>
>   \begin{verbatim}
>     from mod_python import apache
>     module = apache.import_module('dirname/module_name')
>   \end{verbatim}
>
>   If an \code{__init__.py} file is present and it was necessary to import
>   it to achieve the same result as importing the root of a true Python
>   package, then \code{__init__} can be used as the module name. For example:
>
>   \begin{verbatim}
>     from mod_python import apache
>     module = apache.import_module('dirname/__init__')
>   \end{verbatim}
>
>   As a true Python package is not being used, if a module in the directory
>   needs to refer to another module in the same directory, it should use
>   just its name, it should not use any form of dotted path name via the
>   root of the package as with true Python packages. Modules in
>   subdirectories can be imported by using a '/' separated path where the
>   first part of the path is the name of the subdirectory.
>
> Graham
>

It is clear now for me.

--
Clodoaldo Pinto Neto


Mime
View raw message