如何组织 Python 包,使其代码从顶级目录运行,而不将该目录添加到主机的 Python 路径?
我还想组织代码,以便我可以从各种测试子目录运行测试,同样无需将包的顶级目录添加到 python 路径。
考虑以下代码布局:
foobar/
__init__.py
README.txt
its_a_module.py
one_package/
__init__.py
foo.py
bar.py
tests/
__init__.py
testing_one_package.py
tests/
__init__.py
test_foobar.py
- 在 foobar/ 中,我应该能够在 python 解释器中导入 foobar 及其所有子模块
- 从 foobar/,我应该能够运行 tests/test_foobar.py。
- 从 foobar/tests,我应该能够运行 test_foobar.py
- 从 one_package/tests,我应该能够运行 testing_one_package.py。
如何组织我的各种模块的导入语句,以及我的init .py 文件的内容,以满足这些目标?
(我想使用 distutils 来管理代码,我读到从顶级目录运行代码是一个有用的先驱。)