Xif wrote: > Here's a problem with relative imports: > > Suppose I have a package called some_package (in a separate directory > included in the PYTHONPATH, with an __init__.py file etc.) > > This package has a module inside the directory, called "database", and > therefore residing in the file some_package/database.py. > > Now, what if there's another module, for example inside the > site-packages directory, with the same file name (i.e. database.py)? > > We have a problem. Since although these modules have > different absolute > names ("some_package.database" for the first module, and just > "database" for the second), when I try to do > > import database > > from inside some_package, it first of all tries to find the matching > file in the some_package directory (i.e. do a relative import). Since > it first checks the some_package directory, and finds database.py > there, > > import database > > in fact imports the module with the absolute name > some_package.database. > > This is problemat on two levels: > > 1) It is surprising and undesirable that "import database" in effect > may do two completely different things ("import some_package.database" > or "import database") depending on an external, unpredictable factor: > the existence of a database.py file inside the some_package directory. > > 2) It effectively prevents you from naming a module inside a package > with the same name of any module in the "root" PYTHONPATH directories. > In my example, there's no sane way I can see of having > some_package.database if there's already a database module > (database.py > file) in any PYTHONPATH directory. > > Are my observations correct? Is there something I ignored? Should > this be posted somewhere else?
Short answer: don't use relative imports: from some_package import database http://docs.python.org/ref/import.html Robert Brewer MIS Amor Ministries [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list