本地 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 需要重新启动以删除红线。
我在导入我自己的 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 需要重新启动以删除红线。