开发者

Bizarre inconsistent python ImportError - possible circular dependency?

I'm trying to refactor some python code and I'm stuck with an import error I don't understand. I suspect there might be a circular dependency somewhere but I don't see it, and I'm not getting much in the way of hints from the error messages. The codebase is large, but there are two modules of interest here:

radian/models.py defines a class called ACount

datalayer/radian.py has the following line in it:

from radian.models import ACount

When I run the code (either interactively or from the main program) the imports fail in a way that doesn't make sense to me.

>>> from radian.models import ACount
>>> import datalayer.radian
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/Users/leopd/dev/dbproj/datalayer/radian.py", line 10, in <module>
    from radian.models import ACount
ImportError: No module named models

My best guess is that there's a circular 开发者_开发技巧dependency somewhere -- that radian is importing something that imports datalayer. But I don't see it. And the error message doesn't make any sense to me. Any ideas what's going on?

-- UPDATE --

I'm using python 2.6.1 on Mac. The __init__.py files have some code in them, but they only import from standard python packages.


Any module in the datalayer folder (including radian.py), when it sees from radian, will assume that datalayer/radian.py is the relevant module. You might need to do

from __future__ import absolute_import

in datalayer/radian.py and other similarly affected modules, and then check all your imports to ensure that they're absolute. You may be able to get away with renaming datalayer/radian.py and the imports which reference it, depending on where that module is referenced from.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜