最近开发需要使用到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会修改相关环境变量,让命令python
和pip
均指向当前的virtualenv环境。参考virtualenv