(original) (raw)
On Sat, 30 Apr 2016 at 21:51 Greg Ewing <greg.ewing@canterbury.ac.nz> wrote:
It seems that 2to3 is a bit simplistic when it comes to
translating import statements. I have a module GUI.py2exe
containing:
import py2exe.mf as modulefinder
2to3 translates this into:
from . import py2exe.mf as modulefinder
which is a syntax error.
It looks like 2to3 is getting confused by the fact that
there is both a submodule and a top-level module here
called py2exe.
That sounds right. 2to3 has to inspect the environment to figure out if the import was meant to be relative or absolute and it's getting confused.
But the original can only be an absolute
import because it has a dot in it, so 2to3 shouldn't be
translating it into a relative one.
2to3 is nowhere near that sophisticated for tweaking imports :)
Putting "from \_\_future\_\_ import absolute\_import" at the
top fixes it, but I shouldn't have to do that, should I?
There's all sorts of weird stuff going on in that import, like having a dot in the \`from\` part of the import instead of doing \`from .py2exe import mf as modulefinder\`. Try that tweak and see if that solves your SyntaxError for some reason.