我找了很多地方,但是没有找到对我的问题有清晰回答的地方。
我有一个非常合理的需求,需要支持同一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风格的)方式吗?
谢谢!
my_module_*
,你可能能够保持语法与多个版本兼容。例如,在Python2中,except Exception, e:
是有效的语法,但在Python3中不是,所以你应该使用except Exception as e:
,因为它在两个版本中都是有效的语法。 - zondosys.__modules__
,其中包含按名称键入的导入模块字典,通常是文件名。您可能能够通过导入正确的模块并始终将其存储在相同的键下来隐藏版本问题,而不管其实际文件名是什么。 - Paul Cornelius