Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
支持Python依赖项的多个版本_Python_Import_Dependencies_Version - Fatal编程技术网

支持Python依赖项的多个版本

支持Python依赖项的多个版本,python,import,dependencies,version,Python,Import,Dependencies,Version,我是一个开源库(N)的作者,该库为流行的Python库(p)提供了增强功能。最近,P发布了一个新版本,其中他们更改了一些影响我的库N的代码 我对N有一个简单的修复,使其与新版本的p兼容,但我想知道是否有一种好方法可以在我的库中支持两个版本的p,而不必对不同的版本使用if-else。接下来,我想支持library P的两个版本,因此不需要移动到新版本。许多软件包都有\uu version\uu属性 您可以使用模块/类/子类化来优雅地支持多个版本,但您可能仍然需要一个版本来加载正确的实现 导入棉花糖

我是一个开源库(N)的作者,该库为流行的Python库(p)提供了增强功能。最近,P发布了一个新版本,其中他们更改了一些影响我的库N的代码


我对N有一个简单的修复,使其与新版本的p兼容,但我想知道是否有一种好方法可以在我的库中支持两个版本的p,而不必对不同的版本使用if-else。接下来,我想支持library P的两个版本,因此不需要移动到新版本。

许多软件包都有

\uu version\uu
属性

您可以使用模块/类/子类化来优雅地支持多个版本,但您可能仍然需要一个版本来加载正确的实现

导入棉花糖
从打包导入版本
如果version.parse(marshmallow.\uuuuu version\uuuu)>=version.parse(“3.0.0”):
将新的_实现作为impl导入
其他:
将旧的_实现作为impl导入
impl.foo()

将虚拟环境与可与您的库配合使用的版本一起使用。与新版本一样,虚拟环境在这方面对我有何帮助?我希望人们能够根据安装的P版本动态安装软件包,或者如果安装失败,能够在我的代码中优雅地支持多个版本。然后,您必须提供两个版本,并在构建软件包之前检查安装了哪些依赖项