导入已安装包的最佳实践

Best practices for imports for installed package

假设我有一个通过 setup.py 安装的软件包 "foolibrary",并且我是主要开发人员。在包内调用导入的首选方法是什么?假设 foolibrary 有两个模块(a.py、b.py),我需要在 c.py:

中访问它们

在 c.py 中,导入这些内容的首选方式是什么?为什么?

from a import blah

from foolibrary.a import blah

对比

from .a import blah

这三种我都看过,通常使用 foolibrary.a import 风格,但大多是出于习惯。

相对导入语法 from .a import blah 现代的处理方式。请参阅 PEP 328,https://www.python.org/dev/peps/pep-0328/ ,了解为什么它优于其他选择。 (尽管不可否认 PEP 8 更喜欢绝对导出,但它也允许包内相对导入作为可接受的替代方案)。

就个人而言,顺便说一句,我总是只从模块内部导入 模块 ,而不是 "stuff"(函数,类,等等)。

但是,这是一个远非普遍的风格约束(它 ,然而,它是 https://google-styleguide.googlecode.com/svn/trunk/pyguide.html 的一部分——并且在 Google 10 年来帮助塑造了其 Python 实践和风格的一部分,我对这种风格有偏见是可以理解的:-)。