如果我没记错的话,核心系统包是符号链接的,所以它们是相同的文件(部分原因是为了减小virtualenv的大小)。在
默认情况下不包括site-packages目录,因此它不会访问已安装的第三方库。在
如果您想要真正独立和自包含的虚拟环境,那么最好看一下docker。在
Virtualenv实际上更像是一种轻量级的方式,可以为不同的应用程序管理不同的第三方安装的软件包。在
编辑:
看起来always-copy实际上并不总是复制所有文件:
深入到源代码中,似乎有一组很小的模块被认为是“必需的”,这些模块是被复制的:
编辑2:
您可以看到旧的python目录仍然出现在sys.path中,但是在virtualenv本身的目录之后:>>> import sys
>>> sys.path
['', '/home/john/venv/lib/python2.7',
'/home/john/venv/lib/python2.7/plat-linux2',
'/home/john/venv/lib/python2.7/lib-tk',
'/home/john/venv/lib/python2.7/lib-old',
'/home/john/venv/lib/python2.7/lib-dynload', '/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2',
'/usr/lib/python2.7/lib-tk',
'/home/john/venv/local/lib/python2.7/site-packages',
'/home/john/venv/lib/python2.7/site-packages']