我该如何导入项目的本地模块?

时间:2012-10-03 15:17:06

标签: python

关注this file structure,我的项目如下(简化):

Project/
|-- project/
    |-- test/
        |-- test_foo.py
    |-- foo.py

使用最佳做法,我应该如何从foo内导入test_foo.py?我知道相对导入,但是PEP 8 discourages them

2 个答案:

答案 0 :(得分:1)

在单元测试中,至少是外部接口的测试,更喜欢绝对导入。测试应该尽可能地像客户端代码一样,并且当事情被移动时,当__init__.py没有从模块中正确地重新导出时,它们应该中断。

答案 1 :(得分:0)

从测试开始,我总是使用from .. import foo,因为它是最简单的,使包最容易重构,并且不会破坏,因为我始终将我的测试保存在tests/子封装

PEP8讨论的前半部分的相对导入是隐式相对导入:例如,来自foo.pyimport test.test_foo。这些 不好,并且从不使用它们的理由。

否则,唯一的选择是from project import foo