quetz-mod_python-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Graham Dumpleton" <grah...@dscpl.com.au>
Subject Re: Updated documentation on apache.import_module()
Date Mon, 04 Dec 2006 03:30:01 GMT
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
  used instead. For example:

  \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

Mime
View raw message