Julien Cigar
jcigar at ulb.ac.be
Sun Oct 16 07:05:11 EDT 2005
Graham Dumpleton wrote: > > 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 specific > to the current mod_python implementation of apache.import_module(). Well, > that is what I thought ...... > > At this point I am a bit confused as I can't find anything in the > mod_python > 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 what > platform? I don't understand how it could be working for you. > > Graham > I'm using mod_python version 3.1.3 on a Debian Linux platform (kernel 2.6.12) with Python 2.3 A small piece of my code can be found on http://rafb.net/paste/results/9sjUSi95.html
|