Python_virtualenv沙箱

最近开发需要使用到python的沙箱环境,以隔离不同程序的开发,这里记录一下python沙箱virtualenv的了解,参考virtualenv,官网virtualenv-documentation.

在同时开发多个应用程序时,可能各个程序所需要的模块版本不同,如A程序需要jinjia 2.6, B程序需要jinja 2.7。默认情况所有通过pip安装的第三方包都会被放到python的site-packages目录下,则会造成冲突。

可以通过下面命令安装virtualenv:

1
sudo pip install virtualen

通过virtualenv模块我们可以轻松为每个应用程序设置独立的python运行环境。假设已经切换到A项目目录下,可以通过以下命令建立新的运行环境:

1
virtualenv --no-site-packages env

--no-site-packages参数指不引入任何默认环境已经引入的库,还可以通过--python设置所需要的python版本环境。

上面命令会在当前目录建立一个env文件夹,记录了环境的设置和第三方库。可以通过执行下面命令进入该环境:

1
source venv/bin/activate

之后正常安装需要的第三方包,都只会影响当前这个env环境,不会影响系统python环境。

如果需要退出env环境,可以使用:

1
deactivate

virtualenv的原理是把系统Python复制一份到virtualenv的环境,用命令source venv/bin/activate进入一个virtualenv环境时,virtualenv会修改相关环境变量,让命令pythonpip均指向当前的virtualenv环境。参考virtualenv