我刚开始使用 python 并且无法理解包内模块加载的搜索路径。我有这样的结构:
top/ Top-level package
__init__.py Initialize the top package
src/ Subpackage for source files
__init__.py
pkg1/ Source subpackage 1
__init__.py
mod1_1.py
mod1_2.py
...
pkg2/ Source subpackage 2
__init__.py
mod2_1.py
mod2_2.py
...
...
test/ Subpackage for unit testing
__init__.py
pkg1Test/ Tests for subpackage1
__init__.py
testSuite1_1.py
testSuite1_2.py
...
pkg2Test/ Tests for subpackage2
__init__.py
testSuite2_1.py
testSuite2_2.py
...
...
在 testSuite1_1 我需要导入模块 mod1_1.py (等等)。我应该使用什么导入语句?Python 的官方教程(位于 docs.python.org,第 6.4.2 节)说:
“如果在当前包(当前模块是其子模块的包)中找不到导入的模块,则导入语句会查找具有给定名称的顶级模块。”
我认为这意味着我可以使用(在 testSuite1_1.py 中):
从 src.pkg1 导入 mod1_1
或者
导入 src.pkg1.mod1_1
两者都不起作用。我在这里阅读了类似问题的几个答案,但找不到解决方案。
编辑:我更改了模块名称以遵循 Python 的命名约定。但我仍然无法让这个简单的例子工作。