【问题标题】:Why use absolute instead of relative imports in a Python package?为什么在 Python 包中使用绝对而不是相对导入?
【发布时间】:2019-01-16 22:08:35
【问题描述】:

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

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

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

【问题讨论】:

  • 我的第一个想法是他们最初会想要支持不支持相对导入的 Python 版本(然后他们继续这样做),但似乎 PEP 328 在 2004 年获得批准并发布了 NumPy 1.0在 2006 年,所以也许不是。这可能只是风格问题,或者开发人员不习惯相对导入。
  • 对我来说,这是因为 PEP8 推荐,然后是像 PyCharm 这样的 IDE,允许使用简单的快捷方式添加每个需要的绝对路径导入。
  • 这是一种风格选择,因为可读性很重要。

标签: python numpy


【解决方案1】:

Absolute vs Relative Imports in Python

绝对进口

绝对导入是首选,因为它们非常清晰明了。只需查看语句,就很容易准确地知道导入的资源在哪里。此外,即使导入语句的当前位置发生变化,绝对导入仍然有效。事实上,PEP 8 明确推荐绝对导入。

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

相对导入

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

不幸的是,相对导入可能很混乱,尤其是对于共享 目录结构可能发生变化的项目。相对的 导入也不像绝对的那样可读,而且不容易 告诉导入资源的位置。

PEP8:about Imports

【讨论】:

    猜你喜欢
    • 2014-05-05
    • 2012-09-26
    • 2018-07-20
    • 1970-01-01
    • 2018-05-15
    • 2018-01-08
    • 1970-01-01
    • 2016-10-09
    相关资源
    最近更新 更多