这不是问题的重复:
Import python packages with different versions installed
也不能通过virtualenv/pipenv解决:共享相同名称/路径但具有不同代码/版本的包必须安装在相同的环境中,以便程序能够正常运行
考虑到以下典型的钻石依赖问题:
假设我们可以完全访问包“program”、“feature_A”和“feature_B”的源代码,并且feature_A和feature_B都有以下代码:
import library.*在像virtualenv、pip和conda这样的传统包管理器中,上述情况将阻止feature_A和feature_B在同一个项目中使用。但是,由于python是一种解释性语言,我们可以使用feature_A和feature_B的源代码。
library (v1.0)和library (v2.0)的包源代码/字节代码,为每个包生成2个加密散列,并将它们安装在两个依赖于各自散列的不同路径下。feature_A和feature_B,以便它们从依赖于加密散列的新路径导入,并安装重写版本。program,以便从安装重写的feature_A和feature_B的新路径导入。现在我的问题是:完全自动化这个过程有多难?需要弱人工智能吗?或者可以用纯函数逻辑来实现?
发布于 2019-09-07 21:45:20
我会在不同的PYTHONPATH中安装不同的软件包。
PYTHONPATH=insertherepath1 ; python setup.py install --prefix=insertherepath1或
PYTHONPATH=insertherepath1 ; pip install --install-option="--prefix=insertherepath1" package==v1对于要安装在另一个路径insertherepath2中的软件包的其他版本,也是一样的。不同PYTHONPATH中的两个安装仍然可以访问主python中其他常见安装的包。
在python中使用不同的包
import sys
sys.path.insert(0, 'insertherepath1')
import package #gets version 1
#maybe (depends on further dependencies) : sys.path.pop(0)并等效地使用另一个版本:
import sys
sys.path.insert(0, 'insertherepath2')
import package #gets version 2
#maybe (depends on further dependencies) : sys.path.pop(0)发布于 2019-09-18 04:14:00
我自己也没遇到过这种情况。我的建议是重命名库,以便它们以不同的名称安装。对我来说,这似乎是最简单的方法。
发布于 2019-09-14 17:18:11
安装特定版本
pip允许您使用版本说明符指定要安装的包的哪个版本。例如,要安装特定版本的请求:
pip install requests==2.18.4
要安装最新的2.x版本的请求:
pip install requests>=2.0.0,<3.0.0
若要安装包的预发布版本,请使用--预标记:
pip install --pre requests
https://stackoverflow.com/questions/57837613
复制相似问题