本地 python 模块覆盖使用 pip 安装的模块

Local python module overrides module installed with pip

我在导入我自己的 pip 包时遇到问题,该包与 django-app 中的模块同名。假设我自己的 pip 模块被称为:fancymodule。然后我在一个名为相同的 django-app 中有一个模块文件夹:

* django-project
    * payments
        * models.py
        * fancymodule/
            * __init__.py

我遇到的问题是,在 payments/models.py 中,我导入:

from fancymodule import ApiClient

这假设引用了通过 pip 安装的 fancymodule。而是引用 payments-django-app 中的模块。

如果我想引用 payments-django-app 中的模块,在我看来,这应该是:

from payments.fancymodule import whatever

我从 payments/models.py 的角度了解到,import fancymodule .. 将在付款文件夹中引用 fancymodule.. 但我可以 change/fix 这个,所以它参考通过 pip 安装的 fancymodule ?

仅供参考:处理旧的遗留项目。

家里有人可以帮忙。

marcinn 关于使用 from __future__ import absolute_import 的建议有效。

所以我在 models.py 文件中的解决方案最终是:

from __future__ import absolute_import
from fancymodule import ApiClient

正如我在上面的评论中所说的..我没有发现我的 PYTHONPATH 有任何问题。正如 marcinn 所说,这很可能是 Python 3.x 的事情..而且因为我使用的是 2.7,所以 PYTHONPATH 看起来不错是有道理的。

OBS:PyCharm 红线 from fancymodule import ApiClient,但它有效。所以我认为它只是 PyCharm 需要重新启动以删除红线。