根据条件安装依赖

Installing dependency on condition

我有一个 Python 包 P,它有要求 A 和要求 B3.4,但是 A 有要求 B4.1。但是,我知道 P 在某些情况下可以与 B4.1 一起正常工作。如果在目标环境中找不到另一个版本的 B,我希望能够 pip install package P 并且只安装 B3.4

我尝试了以下方法:

是否有任何原因可能无法正常工作?我还有哪些其他选择?

谢谢!

我认为您没有任何干净的解决方案,您将不得不使用一些技巧。

在构建时涉及动态检查的解决方案(即 setup.py 中的代码)非常有限,因为一旦构建了轮子它们就无法工作。

在 运行 时涉及动态检查的解决方案不是最佳实践,并且还有很多问题(加载已安装的 模块 进程中 很棘手)。

我现在能想到的一个可能的解决方法是将 PB==3.4 的要求移动到 可选依赖项 (extras),但它也有明显的局限性。只要在 P 的文档中清楚地解释了它,并且清楚地说明了副作用,我会说这是公平的游戏。