奇怪的不一致python ImportError - 可能的循环依赖?

时间:2011-06-06 20:03:57

标签: python import

我正在尝试重构一些python代码而且我遇到了一个我不明白的导入错误。我怀疑在某处可能存在循环依赖,但我没有看到它,并且我没有从错误消息的提示中得到很多。代码库很大,但这里有两个感兴趣的模块:

radian/models.py定义了一个名为ACount

的类

datalayer/radian.py中包含以下内容:

from radian.models import ACount

当我运行代码时(交互式或从主程序运行),导入失败的方式对我来说没有意义。

>>> 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

我最好的猜测是某处存在循环依赖 - radian正在导入导入datalayer的内容。但我没有看到它。并且错误消息对我没有任何意义。有什么想法正在发生什么?

- 更新 -

我在Mac上使用python 2.6.1。 __init__.py文件中包含一些代码,但它们只从标准python包导入。

1 个答案:

答案 0 :(得分:1)

datalayer文件夹中的任何模块(包括radian.py)在看到from radian时都会认为datalayer/radian.py是相关模块。你可能需要做

from __future__ import absolute_import

datalayer/radian.py和其他类似受影响的模块中,然后检查所有导入以确保它们是绝对的。您可以通过重命名datalayer/radian.py和引用它的导入来取消,具体取决于引用该模块的位置。