当virtualenv和系统站点包具有冲突的依赖关系时会发生什么?

时间:2017-03-06 16:43:18

标签: python numpy virtualenv

如果您的虚拟环境包含依赖于X的软件包numpy-1.12,并且您的系统网站包含依赖于Y的软件包numpy-1.8,那么你做的时候会发生

import X
import Y

import Y
import X

(假设您使用

创建了虚拟环境
virtualenv --system-site-packages

或符号链接Y

1 个答案:

答案 0 :(得分:3)

在安装时,依赖关系得到解决,而不是在导入时。因此,源代码中语句import Ximport Y的顺序与您的问题无关,无关紧要。

virtualenv中安装的软件包将在这里获胜,因为这将是第一次在遍历sys.path时找到numpy。检查属性numpy.__file__会告诉您从中获取的属性,并且您可以运行python -m site以查看为什么numpy首先从该位置获取的详细信息。

实际上,软件包通常不指定硬固定到特定版本号的依赖项,但它们指定了一些范围(或者根本没有指定版本限制)。