【问题标题】:What happens when virtualenv and system site packages have conflicting dependencies?当 virtualenv 和系统站点包有冲突的依赖关系时会发生什么?
【发布时间】:2017-03-06 16:43:18
【问题描述】:
如果你的虚拟环境有包X,它依赖于numpy-1.12,而你的系统站点有包Y,它依赖于,比如numpy-1.8,当你这样做时会发生什么
import X
import Y
或
import Y
import X
?
(假设您使用
创建了虚拟环境
virtualenv --system-site-packages
或符号链接Y)
【问题讨论】:
标签:
python
numpy
virtualenv
【解决方案1】:
在安装时解决依赖关系,而不是在导入时。因此,源代码中语句import X 和import Y 的顺序与您的问题无关且无关紧要。
安装在 virtualenv 中的包会在这里取胜,因为那将是遍历sys.path 时第一次找到 numpy。检查属性numpy.__file__ 将告诉您它是从哪里提取的,您可以运行python -m site 来查看为什么会首先从该位置提取numpy 的详细信息。
实际上,包通常不指定硬固定到特定版本号的依赖项,但它们指定了一些范围(或根本不指定版本限制)。