【发布时间】:2016-05-29 19:50:22
【问题描述】:
对于上下文,我使用的是django-rules 包。访问方式如下:
import rules
此包需要在每个应用目录中创建一个名为 rules.py 的文件,以便自动发现这些文件。
问题是在rules.py 文件中使用import rules 会导致文件“导入自身”而不是查看site-packages。所有关于 SO 的相关答案都指向使用绝对导入——但这仅与 Python 2.7 相关,而不是 Python 3.5(绝对导入现在是默认设置)。
我怀疑这可能与sys.path 中的目录顺序有关,但我不确定如何解决该问题。有没有其他人遇到过这个问题?
【问题讨论】:
-
您是否将
django_rules添加到您的INSTALLED_APPS中? -
@Kieran 你是对的,当我意识到这一点时我删除了我的评论:)
-
我认为只有当您的 PYTHONPATH(可能设置在 Django 中)指向 应用程序相关的
rules.py文件所在的应用程序目录时,才会发生这种情况。通常,与应用程序相关的rules.py文件只能通过例如访问。from app import rules或类似名称,并且不会与site-packages/rules.py(或site-packages/rules/__init__.py,以相关者为准)发生冲突。因此,请仔细检查您的 PYTHONPATH 是否超出范围。 -
@Evert 我已经修好了。 Pycharm 正在将所有应用程序添加到我的 python 路径中。更改此行为解决了问题!请发布答案,以便我接受。
-
实际上,您应该自己发布答案,因为这是一个不同的问题:PyCharm 需要调整。我的建议:1/ 更新您的问题,包括您正在使用 PyCharm 的事实(我总是假设人们使用最简单的文本编辑器和终端),以及 2/ 在您的回答中告诉我们您所做的更改在 PyCharm 中解决您的问题,以及为什么 PyCharm 将所有应用程序添加到您的 PYTHONPATH 中(这是默认设置吗?如果是这样,那么糟糕,糟糕的 PyCharm)。
标签: python django python-3.x import python-import