Paul Clinch wrote:



I get:


import Lib


Traceback (most recent call last):
 File "<stdin>", line 1, in ?
ImportError: No module named Lib

I guess there's a Lib/__init__.py.


You are totally right. I was trying to create an example but Python found something on my PYTHONPATH.
Sorry for the confusion, I sent a bad example. Well, could not be so bad because you understood the point.
I'll try to create a new good example today and make it available.


But onto the point you're making. I think its possibly a mis-viewing
of the package idea in Python. A package creates a name space. If you
create Lib/Server/Db with all the __init__.py files, its because you
want to import Lib.Server.Db, rather than a way of organising your
source files.


I agree. Sometimes I need to import Lib.Server.Db but sometimes I need to import Lib.Server.Db.Adapters.PostgreSQLConnection.
Importing from a not package related source code is not a problem, really. My problem is about importing inside a package.


Lib/Server/Db/__init__.py __can__ import Lib/Server/Db/Adapters usign relative paths, but

Lib/Server/Db/Adapters/PostgreSQLConnection.py __cannot__ import from Lib/Server/Db using relative paths

Of course I can do the latter import using absolute paths but that is something I would like to avoid. In other words:
it is possible to import using relative lib paths only in one direction. Why is that? Why can't I import something
"from the containing package"?


Why I would like to do that? Please see my reasons in my original e-mail. If you think that I want a programatically
bad thing, please tell me what is the right way to do it. I'm sorry if I look demanding. I'm open to any suggestions.
I can hardly find a design problem in the language itself, I believe these problems are just mine. I have a bug in my
mind. :-) Please help me to catch it.


If you want to have a single name space, and keep the nested
arrangement of directories, you can add python code in Lib/__init__.py
to traverse directories and import packages that you find.


Ok, in the example, you will see that this is not possible. I'm going to upload it soon.

Or you can define any rules for mapping files and directories to the name space
you desire.


How to do that? By hacking?


-- _________________________________________________________________ Laszlo Nagy web: http://designasign.biz IT Consultant mail: [EMAIL PROTECTED]

                Python forever!


-- http://mail.python.org/mailman/listinfo/python-list

Reply via email to