Dec 30, 2011

virutalenv in python

env


通过virtualenv可以方便的创建一个隔离的python环境,即所谓的沙盒。沙盒的好处包括:
解决库之间的版本依赖,比如同一系统上不同应用依赖同一个库的不同版本。
解决权限限制,比如你没有root权限。
尝试新的工具,而不用担心污染系统环境。

当然,virtualenv还是需要安装到系统环境的,通过easy_install。然后就可以创建沙盒了:
$virtualenv 沙盒名(比如mysandbox)
这个命令会创建一个目录mysandbox,沙盒的所有内容都在该目录下。在mysandbox/bin目录下有个定制的python解释器,它会优先使用mysandbox/lib/pythonX.X/site-packages目录下的库。通过该解释器安装的库都放在上述目录中。

为了方便使用,virtualenv在mysandbox/bin目录下还提供了两个脚本:
$source mysandbox/scripts/activate : 启用指定的沙盒。其实只是改变环境变量PATH中python的路径。你会注意到控制台的前缀变成了 (mysandbox)$,提示你已经进入该沙盒环境。
$source mysandbox/bin/deactivate : 关闭指定的沙盒。

之前说到沙盒的解释器会优先查找沙盒的site-packages目录,如果找不到,就会查找系统的site-packages目录。我们可以在创建沙盒时加入参数--no-site-packages来禁止它查找系统的目录。
目前,默认是 --no-site-packages。如果需要系统 modules,可加参数
--system-site-packages

安装和使用

Windows下默认不使用 system-site-packages
如果要用,必须添加该参数,见--help

$virtualenv env_name [--no-site-packages/--system-site-packages]
$env_name/scripts/activate
$env_name/scripts/deactivate

在 virutalenv 环境下使用
pip install PIL
没有 JPEG, PNG 等支持
直接下载用
python setup.py install
也一样

解决办法是用在 virtualenv 环境下

1. easy_install PIL 它会下载 exe 并安装到虚拟环境。
不能直接点击 exe 安装
2. 找到 lib/site_packages,将 PIL-XXX 文件夹改名为 PIL

0 comments: