我在项目中遇到了一个文件,叫做 - 等待它 - celery.py。是的,celery.py 从已安装的芹菜模块导入(请参阅 http://www.celeryproject.org/),这不是问题,因为该项目的 celery.py 使用
from __future__ import absolute_import
从已安装的芹菜模块导入之前。现在,问题来自djcelery(django-celery),它也想从芹菜(已安装的,而不是项目 celery.py)导入。这就是冲突的发生地,因为 djcelery 在遇到已安装的芹菜之前遇到了项目的 celery.py。我该如何解决这个问题?
最简单、最理智的方法是重构项目并更改文件名。
可能有一些奇怪的方法可以解决这个问题,但我几乎不认为值得,因为它很可能会使您的代码复杂化,并使其容易出错。
正如@Chirila Alexandru所说,只需重命名模块即可。
您还可以:
- 在导入
celery
的文件顶部添加from __future__ import absolute_import
(要改为导入celery.py
,您可以使用from project.your_app import celery
) - 使用显式相对导入来导入
celery.py
:from . import celery