导入已安装包的最佳实践
Best practices for imports for installed package
假设我有一个通过 setup.py 安装的软件包 "foolibrary",并且我是主要开发人员。在包内调用导入的首选方法是什么?假设 foolibrary 有两个模块(a.py、b.py),我需要在 c.py:
中访问它们
- 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 实践和风格的一部分,我对这种风格有偏见是可以理解的:-)。
假设我有一个通过 setup.py 安装的软件包 "foolibrary",并且我是主要开发人员。在包内调用导入的首选方法是什么?假设 foolibrary 有两个模块(a.py、b.py),我需要在 c.py:
中访问它们- 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 实践和风格的一部分,我对这种风格有偏见是可以理解的:-)。