如何组织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
如何组织各种模块的import语句以及 init .py文件的内容,以实现这些目标?
(我想使用distutils来管理代码,我读到从顶级目录运行代码是一个有用的前提。)
答案 0 :(得分:0)
您可以将..
添加到PYTHONPATH
。这将满足您的前两个条件:
您始终可以绝对导入import foobar
和from foobar.one_package import ...
无import one_package
以及其他相关导入。通过这种方式,您可以运行foobar目录中的任何子模块。
对于其他两项规定,
你可以将PWD
的祖父母和曾祖父母添加到PYTHONPATH
,但我从未听说过这一点,听起来很糟糕。你不能真正安装foobar
,即把它放在你的道路上,如果你想要foobar包可用,无论你走多远。