支持多个Python模块版本(具有相同版本的Python)


问题内容

我环顾四周,但找不到明确的答案。

我非常需要支持同一Python模块的N版本。

如果它们存储在相同的包/目录中,则它们必须具有唯一的名称,如以下示例所示:

      .../some/package/my_module_1.0.py
      .../some/package/my_module_1.1.py
      .../some/package/my_module_2.0.py
              -- etc. --

然后,每个人都将通过“ version ”属性存储其版本号。

然后,使用程序将导入所需的正确版本(例如:import my_module_1.1)。

这是完成此多模块版本需求的最佳方式(也是最Python方式)吗?

谢谢!


问题答案:

我对“烧瓶支持多个API版本”进行了一些搜索,发现stackoverflow帖子非常方便。

简而言之,与您提供的内容相比,该文章中建议的唯一实际区别是,它们对每个版本使用子目录,并且每个版本都是模块本身。

如果您能够/允许在版本之间共享通用功能/对象,则此结构可能会使维护/管理模块更加容易。

some_package
+--- my_module/
     +--- v1_0/
          +--- __init__.py
          +--- some_file.py
     +--- v2_0/
          +--- __init__.py
          +--- some_file.py
     +--- __init__.py
     +--- common_stuff.py

但是,如果您不能在版本之间共享内容,那么您当前的想法就可以正常工作,并且更简单。

然后可以像这样导入它:

import my_module.vX_Y as my_module