向后兼容性:将模块移动到子包中

Backwards compatibility: Moving a module into a subpackage

假设我有一个具有这种结构的 Python 包:

project
 +---> module1.py
 +---> module2.py
 +---> module3.py

现在,我决定将它们分组到子包中:

project
 +---> topic1
   +---> module1.py
   +---> module2.py
 +---> topic2
   +---> module3.py

让我们进一步假设其他项目中有很多用户(我不想 update/email/break 在不知情的情况下使用他们的代码)使用以下内容:

from project.module1 import AwesomeClass

这不再适用于新设计。

我能做的是:

project
 +---> module1.py
 +---> topic1
   +---> module1.py
   +---> module2.py
 +---> topic2
   +---> module3.py

并且文件 project/module1.py 只包含一行

# For backwards compatability
from project.topic1.module1 import AwesomeClass

虽然这不是很漂亮,但有点与重构相反。

您是否可以在 __init__.py 中放入一些东西以使其正常工作,或者通过其他一些技巧将其 link 放到原来的位置而不那么显眼?

我觉得

# For backwards compatability
from project.topic1.module1 import AwesomeClass

是唯一明智的解决方案。