用 python 比较多的同学可能都遇到过 python 多版本的问题,其中又包括:
针对上面两点,目前已经有了比较成熟的解决方案,分别是 pyenv 和 virtualenv,对于本地开发或者线上部署都起到很方便的作用
但是今天正巧碰到一个需求,在一个算法托管平台上,算法同学希望能支持同一算法包多版本同时运行,方便进行灰度比较并及时更新版本
对于这种情况,pyenv 和 virtualenv 就显得心有余而力不足了
最终决定自己开发搞了一个工具包,支持同一算法包的版本隔离及卸载,重新加载,大体用法如下:
# 导入多版本模块
lib_1 = import_module("lib", version=1)
lib_2 = import_module("lib", version=2)
# 模块方法调用
lib_1.show()
lib_2.show()
# 列出此模块同时运行哪些版本
modules = list_all_version_of_module("lib")
print(modules)
# 卸载模块
unload_module("lib", 1)
# 重新载入模块
lib_2 = reload_module("lib", 2)
lib_2.show()
# 卸载该模块所有版本
unload_all_module("lib")
本地已经试验通过了,而且项目代码只有百行左右
在这里提供给大家参考,欢迎大家使用并提出建议
代码地址:vimport
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.