[mod_python] database connection

Graham Dumpleton grahamd at dscpl.com.au
Sun Oct 16 06:26:04 EDT 2005

On 16/10/2005, at 7:42 PM, Julien Cigar wrote:

> Graham Dumpleton wrote:
>> A comment on something else in your example first.
>>> pageAction1 = apache.import_module('pages/action1')
>> I wouldn't rely rely on being able to specific '/' in the module name 
>> as
>> argument. The documentation only mentions that '.' can be used if
>> needing to reference a subcomponent of a package. What you are doing 
>> is
>> relying on a strange quirk of the implementation and in mod_python 3.3
>> if the module loading system is overhauled there may be no guarantee
>> that it would work the same. You could always campaign though that it
>> is a useful future that should be maintained but documented. :-)
>> BTW, does the "pages" directory actually have an "__init__.py" file. I
>> think what you are doing doesn't require it to, but wanted to check if
>> you do have it or not.
> My directory structure looks like this :
> index.py
> config.cfg
> config.py
> pages/page1.py
> pages/page2.py
> pages/page3.py
> ...
> My "pages" directory doesn't contain an __init__.py file (should I ?)
> I don't understand what's wrong with 
> apache.import_module(pages/page1.py) .. ? I always done like this :)
> Is it specific to mod_python ? I mean can you import pages/page1.py 
> with the classic Pyhon import ?

You can't use '/' when using the "import" statement in classic Python.
Ie., can't do:

   import pages/page1

You can use '.', ie.,

   import pages.page1

But then this is a package import and the "pages" directory needs to be
set up as a package, ie., it must contain an "__init__.py" file in it,
even if "__init__.py" has nothing in it.

Similarly, if you use the __import__ builtin function, you can't use 
ie., can't do:

   page1 = __import__("pages/page1")

but can do:

   page1 = __import__("pages.page1")

In other words, that you can specify a '/' like you are is quite 
to the current mod_python implementation of apache.import_module(). 
that is what I thought ......

At this point I am a bit confused as I can't find anything in the 
code which would even allow '/' to work. When I even try using it on my
platform, Python throws an exception:

   ImportError: No module named pages/page1

What version of mod_python are you using, what version of Python and 
platform? I don't understand how it could be working for you.


More information about the Mod_python mailing list