【问题标题】:Backwards compatibility: Moving a module into a subpackage向后兼容性:将模块移动到子包中
【发布时间】:2015-11-13 14:49:05
【问题描述】:

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

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

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

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

让我们进一步假设其他项目中有很多用户(我不想在不知道的情况下更新/发送电子邮件/破坏他们的代码)使用以下内容:

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 中添加一些内容以使其正常工作,或者通过其他一些技巧将其链接到它的旧位置而不会那么明显?

【问题讨论】:

    标签: python packages python-import backwards-compatibility


    【解决方案1】:

    我认为

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

    是唯一明智的解决方案。

    【讨论】:

      猜你喜欢
      • 2020-04-10
      • 1970-01-01
      • 2018-03-07
      • 1970-01-01
      • 1970-01-01
      • 2016-02-13
      • 2016-10-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多