Python 3中意外的导入行为

时间:2016-02-17 21:23:53

标签: python django python-3.x import python-import

对于上下文,我使用的是django-rules包。访问方式如下:

import rules

此程序包要求在名为rules.py的每个应用程序目录中创建一个文件,以便自动发现文件。

问题是在import rules文件中使用rules.py会导致文件“自行导入”而不是查看site-packages。 SO上的所有相关答案都指向使用绝对导入 - 但这仅适用于Python 2.7,而不是Python 3.5(绝对导入现在是默认导入)。

enter image description here

我怀疑它可能与sys.path中目录的排序有关,但我不确定如何解决问题。还有其他人遇到过这个问题吗?

1 个答案:

答案 0 :(得分:1)

此问题是多个配置问题的结果。

  • 我已将所有应用标记为Pycharm中的源文件夹。
  • 我还选择了"将源根添加到PYTHONPATH"在我的运行配置中。

因此,可以将rules.py简称为rules,而不是appname.rules。这导致了意想不到的行为。

要解决此问题,我将我的应用取消标记为源文件夹,并取消选中"将源根添加到PYTHONPATH"设置。