Kay Schluehr wrote: > On 8 Jul., 21:09, Peter Otten <[EMAIL PROTECTED]> wrote: >> Robert Hancock wrote: >> > mypackage/ >> > __init__.py >> > push/ >> > __init__.py >> > dest.py >> > feed/ >> > __init__py >> > subject.py >> >> > In subject.py I have >> > from ..push import dest >> >> > But i receive the error: >> > Caught exception importing module subject: >> > File "/usr/local/python/lib/python2.5/site-packages/pychecker/ >> > checker.py", line 621, in setupMainCode() >> > module = imp.load_module(self.moduleName, file, filename, smt) >> > File "subject.py", line 1, in <module>() >> > from ..feed import dest >> > ValueError: Attempted relative import in non-package >> >> > What am I missing? >> >> When you run subject as a file >> >> pychecker mypackage/feed/subject.py >> >> subject.py is regarded as a standalone script, not as part of a package. >> Try >> >> pychecker mypackage.feed.subject >> >> instead to invoke the module via the standard import mechanism. >> >> Peter > > Since when are Python modules not regarded as standalone scripts but > as a "part of a package"? > > The only indication that there is some duality and that it is relevant > at all are those relative imports that came in with Python 2.5. As it > seems this feature is justified by the artificial semantic differences > it produces.
I'm probably misunderstanding you, but the ambiguity I wanted to point out has existed before and has nothing artificial: $ tree . `-- mypackage |-- __init__.py |-- feed | |-- __init__.py | |-- subject.py | `-- subject.py~ `-- push |-- __init__.py `-- dest.py 3 directories, 6 files $ python2.4 -c "import mypackage.push.dest as d; print d.__name__" mypackage.push.dest $ cd mypackage/push/ $ python2.4 -c "import dest as d; print d.__name__" dest ".." in the import goes one up in the package name, not in the filesystem and therefore won't work in the second example. Peter -- http://mail.python.org/mailman/listinfo/python-list