Greg Ewing <[EMAIL PROTECTED]> wrote: > Armin Rigo wrote: > > there > > is no clean way from a test module 'foo.bar.test.test_hello' to import > > 'foo.bar.hello': the top-level directory must first be inserted into > > sys.path magically. > > I've felt for a long time that problems like this > wouldn't arise so much if there were a closer > connection between the package hierarchy and the > file system structure. There really shouldn't be > any such thing as sys.path -- the view that any > given module has of the package namespace should > depend only on where it is, not on the history of > how it came to be invoked.
Wait, wait, wait. If I remember correctly, one of the use-cases cited was for sub-packages of a single larger package to be able to import other sub-packages, via 'from ..subpackage2 import module2'. That is to say, given a package structure like... .../__init__.py .../subpackage1/module1.py .../subpackage1/__init__.py .../subpackage2/module2.py .../subpackage2/__init__.py Running module1.py, with an import line that read: from ..subpackage2 import module2 ... would import module2 from subpackage2 Testing this in the beta I have installed tells me: Traceback (most recent call last): File "module1.py", line 1, in <module> from ..subpackage2 import module2 ValueError: Relative importpath too deep While I can understand why this is the case (if one is going to be naming modules relative to __main__ or otherwise, unless one preserves the number of leading '.', giving module2 a __name__ of __main__..subpackage2.module2 or ..subpackage2.module2, naming can be confusing), it does remove a very important feature. Guido suggested I make up a PEP way back in March or so, but I was slowed by actually implementing __main__-relative naming (which is currently incomplete). As it stands, in order to "work around" this particular feature, one would need to write a 'loader' to handle importing and/or main() calling in subpackage1/module1.py . - Josiah _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com