On Sat, 7 May 2011, Ian Kelly wrote: [...] > > Implicit relative imports were removed in Python 3 to prevent > ambiguity as the number of packages grows. See PEP 328. > > If you have two modules in the same package, pack1.mod1 and > pack1.mod2, then in pack1.mod1 you can no longer just do "import mod2" > or "from mod2 import foo". Either use an absolute import ("from > pack1.mod2 import foo") or make the relative import explicit ("from > .mod2 import foo" -- note the ".") > > If you're upgrading scripts from Python 2 to Python 3, you should > really run them through the 2to3 tool. I believe this is one of the > many things it will fix for you automatically.
For some reason I haven't fathomed yet, I've found that while 2to3 does change the import syntax to the dot form as you say, this results in "ValueError: Attempted relative import in non-package", and I have to change it back to the old way, which works fine although the docs say it shouldn't. This is python 3.2 on Debian testing. For example, if I have a directory containing an __init__.py file, and two modules, one of which is called mod1 and contains #!/usr/bin/python3 a=1 in the other module I can have import mod1 or from mod1 import a but not from .mod1 import a or import .mod1 What gives? -- http://mail.python.org/mailman/listinfo/python-list