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



我在项目中遇到了一个文件,叫做 - 等待它 - 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.pyfrom . import celery

相关内容

  • 没有找到相关文章

最新更新