On Aug 8, 12:37 pm, DG <[EMAIL PROTECTED]> wrote: > Alright, I have searched and searched and read many conversations on > the topic of relative and absolute imports and am still not getting > the whole thing through my skull. > > Highlights of what I've > read:http://mail.python.org/pipermail/python-list/2007-January/422973.htmlhttp://groups.google.com/group/comp.lang.python/browse_thread/thread/...http://www.python.org/dev/peps/pep-0328/http://docs.python.org/whatsnew/pep-328.html > > So my problem and argument: > I want to create a package organized as the following: > pckg/ > __init__.py > main.py > moduleA/ > __init__.py > A_base.py > A1/ > __init__.py > A_inherit1.py > other_A1_files... > A2/ > __init__.py > A_inherit2.py > other_A2_files... > moduleB/ > ... > Explanation: > The main program is located in main.py and it implements the different > modules (A, B). Within the modules the basic organization is; the > base class for all different types of A is directly within the moduleA > directory. All of the different inherited classes of A are within > their own subdirectory with a mess of their own files. This is done > so that a new subclass of A can be added/removed by just adding/ > removing the subdirectory and each of these subclasses may have their > own maintainer, but they should all inherit from A_base.py > > If I am developing the A1 directory, I want to be able to test > A_inherit1.py by using 'if __name__ == "__main__"' within the > A_inherit1.py file and by typing 'python A_inherit1.py' on the command > line. I prefer this simply to keep all unit tests within the same > directory and same file as the inherited class. > > My Problem: > A_inherit1.py has the line: > 'from ..A_base import A_Base_Class' > so that I can later declare the inherited class as such: > 'A1_Inherited_Class(A_Base_Class):' > > *BUT* I get the 'attempted relative import in non-package' error even > when I try the > 'from __future__ import absolute_import' command. > I would prefer to be able to test the file without adding anything to > the PYTHONPATH, like I said by using the name == main trick. > > So could someone explain to me what the rationale behind not allowing > parent directory relative imports is? And possibly what I can do to > get around it? (I really don't like messing with the sys.path for > something like this) > > Thanks, > Danny G
Didn't read the whole thing, but would imp.load_source( name, relative_path ) help you at all? -- http://mail.python.org/mailman/listinfo/python-list