virtualenv不会复制像shutil和urllib2这样的标准模块

时间:2010-03-29 14:15:33

标签: python virtualenv

当我创建一个新的virtualenv virtualenv .virtualenvs/my_env时,只有一小部分标准python模块被复制/链接到新的virtualenv。

例如,当我在.virtualenvs / my_env / lib / python2.6中ls -l时,我看到:

...
... os.py -> /usr/lib/python2.6/os.py
... os.pyc -> /usr/lib/python2.6/os.pyc

shutilurllib2等模块即使在/usr/lib/python2.6/shutil.py中也不会被复制。我正在使用Ubuntu 9.10。

这是预期的行为吗?如何在virtualenv中安装shutil等模块(我在pypi上找不到这些模块)?

1 个答案:

答案 0 :(得分:6)

virtualenv munges sys.path将您的虚拟环境插入系统库的前面,但系统库仍在路径上,因此它们仍然可以访问。

所以,例如,做:

>>> import os
>>> os
<module 'posixpath' from '/environments/userpython/lib/python2.6/posixpath.pyc'>
>>> import shutil
>>> shutil
<module 'shutil' from '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/shutil.pyc'>

我的os模块来自我的虚拟环境,但是shutil模块来自我的系统Python。