我在导入自己的pip包时遇到问题,该包的名称与django应用程序中的模块相同。假设我自己的pip模块名为:fancymodule
。然后,我在一个名为的django应用程序中有一个模块文件夹
* django-project
* payments
* models.py
* fancymodule/
* __init__.py
我遇到的问题是,在payments/models.py
内部,我导入:
from fancymodule import ApiClient
这假设是引用通过pip安装的fancymodule
。但却引用了支付django应用程序中的模块。
如果我想参考支付django应用程序中的模块,在我的脑海中,这应该是:
from payments.fancymodule import whatever
我从payments/models.py
的视图中了解到,import fancymodule ..
将在支付文件夹中引用fancymodule
。。但是我可以更改/修复它吗,这样它就引用了通过pip安装的fancymodule
?
仅供参考:正在进行一个旧的遗留项目。
回家有人可以帮忙。
marcinn关于使用from __future__ import absolute_import
的建议有效。
所以我在models.py
文件中的解决方案最终是:
from __future__ import absolute_import
from fancymodule import ApiClient
正如我对上述评论所说的。。我没有发现我的蟒蛇有什么毛病。正如marcinn所说,这是最像Python 3.x的东西。。由于我是2.7,这是有道理的巨蟒看起来很好。
OBS:PyCharm对from fancymodule import ApiClient
进行了红线批注,但它有效。所以我认为只有PyCharm需要重新声明才能删除红线。