【发布时间】:2012-02-01 03:23:04
【问题描述】:
在下面的层次结构中,是否有一种方便且通用的方式来使用下面所有 .py 文件中的通用术语来引用 top_package?我希望有一种一致的方式来导入其他模块,这样即使“top_package”更改名称也不会中断。
我不赞成使用像“..level_one_a”这样的相对导入,因为相对路径将与下面的每个 python 文件不同。我正在寻找一种方法:
- 对于包中的同一个模块,每个 python 文件可以有相同的导入语句。
-
在包内的任何 .py 文件中对“top_package”的解耦引用,因此无论“top_package”名称更改为什么,都不会中断。
top_package/ __init__.py level_one_a/ __init__.py my_lib.py level_two/ __init__.py hello_world.py level_one_b/ __init__.py my_lib.py main.py
【问题讨论】:
-
为什么要引用顶层模块? (有时这个答案揭示了真正的问题/解决方案。)
-
我想让包尽可能地复用,这样当我重命名顶层模块时,一切仍然可以正常工作,而不必更改里面的每个导入名称。