【问题标题】:Module name conflict in Python, how to resolve?Python中的模块名称冲突,如何解决?
【发布时间】:2014-01-05 17:54:07
【问题描述】:

我在我们的项目中发现了一个文件,名为 - 等等 - celery.py。是的,并且 celery.py 从已安装的 celery 模块中导入(参见http://www.celeryproject.org/),这不是问题,因为项目的 celery.py 使用了

from __future__ import absolute_import     

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

【问题讨论】:

    标签: python django celery django-celery


    【解决方案1】:

    最简单、最明智的方法是重构您的项目并更改文件名。

    可能有一些奇怪的方法可以解决这个问题,但我不认为这是值得的,因为它很可能会使您的代码复杂化,并使其容易出错。

    【讨论】:

      【解决方案2】:

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

      你也可以:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-21
        • 2016-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多