python软件包的版本管理

时间:2020-02-16 10:25:21

标签: python virtualenv git-submodules

管理不同版本的软件包的最佳实践是什么? 我了解virtualenv,但是我不确定它是否适合我的情况。

我的问题:

考虑我有2个项目(P1,P2),它们都使用1个小项目(P3)。 我使用git子模块,并将P3添加到P1和P2。

然后我拥有使用上述所有项目的P4,并且P4需要P3的最新版本。

如何处理? 我希望P1,P2,P4使用自己的P3版本。但是当我构建P4时,我只有P3的一个版本。

项目结构:

所有项目都具有这种结构(省略了一些文件):

P4 示例:

├── project_name (sources are here)
├── Makefile
├── submodules
│   └── P1
│       ├── submodules
│       │   └── P3
│   └── P2
│       ├── submodules
│       │   └── P3
│   └── P3
├── tests
└── setup.py

如何导入子项目:

在这里不足为奇,所有项目都以这种方式导入 P3 ,因为它是唯一安装的一个版本。

因此 P1 使用: from P3 import something

P4还使用:

from P3 import something

from P1 import something_else

2 个答案:

答案 0 :(得分:-1)

一般规则是,不支持在单个Python环境中运行同一项目的多个版本。显然(就像软件中的其他限制一样),有很多解决方法,但是它们都需要大量的工作。

根据我对这个特定问题的了解,我相信供应商可能是一种规避此限制的合适技术,同时需要对项目的当前状态进行尽可能少的修改。

1。带有git子模块

  • P3 保留在另一个 git 存储库中。
  • 使用 git子模块在主项目中具有两个不同的 P3 副本。

2。使用供应商工具


管理不同版本的软件包的最佳实践是什么?我了解virtualenv,但是我不确定它是否适合我的情况。

不是。虚拟环境可以帮助例如使用同一库的两个不同版本在两个不同的项目上工作。但是,这两个项目需要生活在两个不同的虚拟环境中。因此,您不可能有一个项目同时从同一库的两个不同版本中导入。

答案 1 :(得分:-2)

Virtualenv可以工作,为什么您认为它不起作用?

相关问题