为什么在Python包中使用绝对导入而不是相对导入?

时间:2019-01-16 14:00:20

标签: python numpy

我最近创建了一个Python包,并且在其中仅使用相对导入来访问存储在其他方法中的函数。

现在,在Numpy中,我看到很多文件大量使用绝对导入,例如this file。它有很多类似from numpy.core import overrides的语句。

在使用相对导入时,我没有看到任何缺点。他们为什么这样做而不是from ..core import overrides?绝对导入不要求已经安装了numpy吗?

1 个答案:

答案 0 :(得分:1)

Absolute vs Relative Imports in Python

绝对导入

  

首选绝对导入,因为它们非常清楚和直接。仅通过查看语句,就可以很容易地准确知道导入的资源在哪里。此外,即使import语句的当前位置更改,绝对导入仍然有效。实际上,PEP 8明确建议绝对导入。

     

但是,有时,绝对导入可能会变得非常冗长,具体取决于目录结构的复杂程度。

相对导入

  

相对进口的一个明显优势是它们非常简洁。

     

不幸的是,相对进口可能很杂乱,特别是对于共享   目录结构可能会更改的项目。相对的   导入也不如绝对导入更易读,这也不容易   告诉导入资源的位置。

PEP8about Imports