我典型的 Python 项目结构看起来像
setup.py
foobar/
__init__.py
main.py
something_else.py
helpers.py
test/
addition/
test_consistency.py
test_speed.py
subtraction/
test_consistency.py
test_speed.py
这很好用。
然后我注意到加法和减法测试共享相当多的代码、复杂的断言等。我试图将代码移动到帮助文件中
test/
helpers.py
addition/
test_consistency.py
test_speed.py
subtraction/
test_consistency.py
test_speed.py
并从加法/减法中导入,例如
from .. import helpers
但这失败了
E ImportError: attempted relative import with no known parent package
好吧,测试文件夹不是“包”,相对导入不起作用。 一个著名的 Python 问题。
如何在加法和减法子文件夹之间共享代码?平面目录结构不是一种选择。(在现实生活中,文件夹结构比上面的例子更复杂。)
奇怪的是,我注意到 pyscaffold对in 中的相对导入有作用tests/
,请参见此处。他们是怎么做到的?