前提
在开发过程中,经常需要使用各种第三方库,而且python又提供了pip,easy_install等工具来简化库的安装,所以很容易就会在系统python的site-packages目录中装满各种各样的库,但是这样在下面几种情况下会有问题:
1 2 3 | 1.没有site-packages目录的写权限,比如共享主机 2.不同项目依赖同一个库的不同版本,而这两个版本又不向下兼容 3.在linux下更新系统时,自动更新某些依赖库 |
解决
这时候我们就需要一个我们可以自己创建python环境的工具,它要满足如下条件:
1 2 3 4 | 1.我们可以指定环境的位置,这样就可以将其安装在自己有权限的目录 2.可以创建多个环境,这样不同项目可以使用不同环境,即使依赖同一个库的 不同版本也不会有影响 3.系统自动更新时,系统python的site-packages中库的更新不会对自己项目造成影响 |
virtualenv就是这样一个工具,它可以在指定位置创建一个拥有独立安装目录的python环境,该隔离环境不会与其他virtualenv环境共享模块。它的具体用法可以参考这里,使用virtualenv来创建独立的环境还有一个好处,它可以和pip结合快速创建项目环境。
1 2 3 4 | # 导出当前环境下的所有第三方库 pip freeze > requirements.txt # 在新环境下安装所有文件内的第三方库
|
*************************************************************** virtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够: 1. 在没有权限的情况下安装新套件 2. 不同应用可以使用不同的套件版本 3. 套件升级不影响其他应用 安装 sudo apt-get install python-virtualenv 使用方法 virtualenv [虚拟环境名称] 如,创建**ENV**的虚拟环境 virtualenv ENV 默认情况下,虚拟环境会依赖系统环境中的site packages,就是说系统中已经安装好的第三方package也会安装在虚拟环境中,如果不想依赖这些package,那么可以加上参数 --no-site-packages建立虚拟环境 virtualenv --no-site-packages [虚拟环境名称] 启动虚拟环境 cd ENV source ./bin/activate 注意此时命令行会多一个(ENV),ENV为虚拟环境名称,接下来所有模块都只会安装到该目录中去。 退出虚拟环境 deactivate 在虚拟环境安装Python套件 Virtualenv 附带有pip安装工具,因此需要安装的套件可以直接运行: pip install [套件名称] 如果没有启动虚拟环境,系统也安装了pip工具,那么套件将被安装在系统环境中,为了避免发生此事,可以在~/.bashrc文件中加上: export PIP_REQUIRE_VIRTUALENV=true 或者让在执行pip的时候让系统自动开启虚拟环境: export PIP_RESPECT_VIRTUALENV=true Virtualenvwrapper Virtaulenvwrapper是virtualenv的扩展包,用于更方便管理虚拟环境,它可以做: 1. 将所有虚拟环境整合在一个目录下 2. 管理(新增,删除,复制)虚拟环境 3. 切换虚拟环境 4. ... 安装 sudo easy_install virtualenvwrapper 此时还不能使用virtualenvwrapper,默认virtualenvwrapper安装在/usr/local/bin下面,实际上你需要运行virtualenvwrapper.sh文件才行,先别急,打开这个文件看看,里面有安装步骤,我们照着操作把环境设置好。 创建目录用来存放虚拟环境 mkdir $HOME/.virtualenvs 在~/.bashrc中添加行: export WORKON_HOME=$HOME/.virtualenvs 在~/.bashrc中添加行:source /usr/local/bin/virtualenvwrapper.sh 运行: source ~/.bashrc 此时virtualenvwrapper就可以使用了。 列出虚拟环境列表 workon 也可以使用 lsvirtualenv 新建虚拟环境 mkvirtualenv [虚拟环境名称] 启动/切换虚拟环境 workon [虚拟环境名称] 删除虚拟环境 rmvirtualenv [虚拟环境名称] 离开虚拟环境 deactivate