支持多个Python模块版本(与Python版本相同)

Supporting multiple Python module versions (with the same version of Python)

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

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

如果它们存储在同一个 package/directory 中,则必须对它们进行唯一命名,如下例所示:

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

每个人都会依次通过“version”属性存储其版本号。

消费程序然后导入它需要的正确版本 (例如:导入 my_module_1.1)。

这是实现多模块版本需求的最佳(也是最 pythonic)方式吗?

谢谢!

我用谷歌搜索 "flask support multiple API versions",发现 Whosebug post 非常方便。

简而言之,post 与您提供的建议唯一真正的区别是它们为每个版本使用子目录,并且每个版本本身就是一个模块。

如果您 able/allowed 在版本之间共享公共 functions/objects,此结构可能会使 maintaining/managing 您的模块更容易。

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