Search code examples
pythonpython-3.ximportrelative-import

Weird relative import resolution error in python 3.2.3


I encoutner the following import resolution error in a program of mine:

I am: homie.translators.is24.rest.translator
Traceback (most recent call last):
  File "/usr/local/sbin/is24rest", line 3, in <module>
    from homie.interfaces.is24.rest import __main__
  File "/usr/local/lib/python3.2/dist-packages/homie/interfaces/is24/rest/__init__.py", line 8, in <module>
    from .exporter import Exporter
  File "/usr/local/lib/python3.2/dist-packages/homie/interfaces/is24/rest/exporter.py", line 12, in <module>
    from homie.translators.is24.rest.translator import Translator
  File "/usr/local/lib/python3.2/dist-packages/homie/translators/is24/rest/translator.py", line 9, in <module>
    from .factories.rest.restFactory import RestFactory
ImportError: No module named factories.rest.restFactory

The content of /usr/local/lib/python3.2/dist-packages/homie/translators/is24/rest/translator.py is

"""
Created on 18.06.2014

@author: Richard Neumann
"""
print('I am: ' + str(__name__))
from homie.translators.abc import Translator as T

from .factories.rest.restFactory import RestFactory
from .factories.openimmo.openimmoFactory import OpenImmoFactory


class Translator(T):
<snip>

Also, the relative module exists:

root@srv:/usr/src/is24-translator# ls /usr/local/lib/python3.2/dist-packages/homie/translators/is24/rest/factories/rest/
abc.py  attachments  __init__.py  __pycache__  realestates  restFactory.py

Why does python3 try to do an absolute import here? I do only encounter this problem under Debian 7 with python 3.2.3. Under Arch w/ python 3.4.1 it works just fine.

Am I missing something?


Solution

  • There was the __init__.py missing in .factories, which caused this error. Took me a while to realize that.