Python中的模块名称冲突,如何解决?

时间:2014-01-05 17:54:08

标签: python django celery django-celery

我在项目中遇到了一个文件,叫做 - 等待它 - celery.py。是的,celery.py从已安装的芹菜模块导入(参见http://www.celeryproject.org/)这不是问题,因为项目的celery.py使用

from __future__ import absolute_import     
从安装的芹菜模块导入之前

。现在,问题来自djcelery(django-celery),它也想从芹菜(已安装的,而不是项目celery.py)导入。这就是冲突发生的地方,因为djcelery在遇到已安装的芹菜之前遇到了项目的celery.py。 我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

最简单,最理智的方法是重构项目并更改文件名。

可能有一些奇怪的方法,但我很难认为值得,因为它很可能使你的代码复杂化,并使它容易出错。

答案 1 :(得分:1)

作为@Chirila Alexandru said,只需重命名模块。

你也可以:

  • 在导入celery的文件顶部添加from __future__ import absolute_import(改为导入celery.py,您可以使用from project.your_app import celery
  • 使用显式相对导入,导入celery.pyfrom . import celery