安装独立Python虚拟环境:virtualenv

  • Post author:
  • Post category:python




virtualenv



Python有着庞大的开源社区的支持,很自然就产生这么一个问题:第三方包参差不齐,如果我们想在服务器测试,或者升级某个包,就会导致生产环境产生杂乱,多


余的第三方依赖包。


virtualenv就是来解决这个问题的,virtualenv可以生成多个的Python环境,各个环境相互独立,互不影响,且和正式环境一模一样。


1、安装




pip install virtualenv



2、用法:



(1)创建ENV:virtualenv ENV



该命令会创建一个安装包存放目录:


ENV/lib/pythonX.X/site-packages,同时还会为该虚拟环境创建一个Python解释器:ENV/bin/python。



在Python脚本头加上:#!/path/to/ENV/bin/python,意味着使用该虚拟环境的Python解释器以及第三方依赖包。



当然,我们还可以加上参数:—system-site-packages, virtualenv –system-site-packages ENV


,


这样就意味着该虚拟环境将会继承我们的全局Python环境的site-packages目录,也就是说,全局环境的第三方依赖包都能在该虚拟环境下使用。



(2)进入ENV:source ENV/bin/activate



执行该命令将会修改shell环境变量,将环境变量$PATH的第一个入口动态修改为:EVN/bin目录。这样,我们在shell交互环境下,输入python,就会使用当前干净



的虚拟环境另外。当然这么做只是一个便利,我们也可以不修改环境变量(即不使用source命令),直接用当前虚拟环境的解释器运行脚本:ENV/bin/pthon script.py



(3)


在虚拟环境安装第三方插件



pip install [插件名称]



Virtualenv 附带有pip安装工具,因此需要安装的套件可以直接运行:



ENV/bin/pip install [插件名称]



如果没有启动虚拟环境,系统也安装了pip工具,那么套件将被安装在系统环境中,为了避免发生此事,可以在


~/.bashrc


文件中加上:



export PIP_REQUIRE_VIRTUALENV=true



或者让在执行pip的时候让系统自动开启虚拟环境:




export PIP_RESPECT_VIRTUALENV=true


(4)

deactivate

;将原来的环境变量修改回来。现在我们就退出了虚拟环境,回到全局Python环境下了。






Virtualenvwrapper



Virtaulenvwrapper是virtualenv的扩展包,用于更方便管理虚拟环境,它可以做:1. 将所有虚拟环境整合在一个目录下2. 管理(新增,删除,复制)虚拟环境3. 切换虚拟环境


安装




sudo easy_install virtualenvwrapper



此时还不能使用virtualenvwrapper,默认virtualenvwrapper安装在/usr/local/bin下面,实际上你需要运行virtualenvwrapper.sh文件才行,先别急,打开这个文件看看,里面有安装步骤,我们照着操作把环境设置好。



1、创建目录用来存放虚拟环境



2、在~/.bashrc中添加行:exp

ort WORKON_HOME=$HOME/.virtualenvs





3、

在~/.bashrc中添加行:source /usr/local/bin/virtualenvwrapper.sh



4、运行:


source ~/.bashrc



此时virtualenvwrapper就可以使用了。



列出虚拟环境列表



workon,

也可以使用:


lsvirtualenv



(1)新建虚拟环境



mkvirtualenv [虚拟环境名称]



(2)启动/切换虚拟环境



workon [虚拟环境名称]



(3)


删除虚拟环境



rmvirtualenv [虚拟环境名称]



(4)


离开虚拟环境






deactivate


问题:

此时如果遇到下面问题:(Linux)

virtualenvwrapper.sh no such file or directory,即virtualenvwrapper.sh没有成功的安装在/usr/local/bin目录下,则可以使用下列方式解决:

pip uninstall virtualenvwrapper    卸载virtualenvwrapper

pip install virtualenvwrapper


重新安装virtualenvwrapper

这时候就能成功的在/usr/local/bin下看到该sh文件了

由于本人使用(OSX),也同样遇到该文件不存在的问题,也是使用同样的方法(先卸载,再重新安装)解决:

最终该文件被写入到:

$HOME/anaconda/bin目录下(本人机器使用了anaconda环境)

运行 source ~/.zshrc,报错:/usr/bin/python: No module named virtualenvwrapper

virtualenvwrapper.sh: There was a problem running the initialization hooks.If Python could not import the module virtualenvwrapper.hook_loader,

check that virtualenvwrapper has been installed for

VIRTUALENVWRAPPER_PYTHON=/usr/bin/python and that PATH is

set properly.

这时候可以将VIRTUALENVWRAPPER_PYTHON路径(python全局路径)加入到~/.zshrc中,vim ~/.zshrc

VIRTUALENVWRAPPER_PYTHON=$HOME/anaconda/bin/python

再执行:source ~/.zshrc,成功!






参考资料:



https://virtualenv.pypa.io/en/latest/virtualenv.html




http://stackoverflow.com/questions/11372221/virtualenvwrapper-not-found




http://virtualenvwrapper.readthedocs.org/en/latest/index.html




版权声明:本文为u013896457原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。