pyenv virtualenv和virtualwrapper
pyenv
pyenv最大的优势是:可以在”全局”管理不同版本的Python, 可以随时配置当前的使用的Python版本,并对其他使用Python解释器的程序生效。
当系统安装多个版本的Python,使用pyenv切换是相当方便的。
virtualenv和virtualwrapper
virtualenv创建的不是全局的Python环境,只是一个虚拟的工作环境, 通常用来为一个应用创建一套“隔离”的Python运行环境, 而且只有在激活某个自定义环境时,这个环境对应的Python版本和三方库才会生效。 相比pyenv它是更轻量级的,类似于容器的工作方式。 而pyenv只是对Python版本它的三方库进行分别管理,不能对每个项目进行单独配置。
如果开发者没有经常更改系统默认Python版本的需求,pyenv是不需要安装的。 但是对于项目开发而言,virtualenv基本上是必须的。 而且virtualenv可以创建任意版本的Python和三方库组合的环境,在大部分情况下使用起来完全可以代替pyenv。
virtualwrapper是对virtualenv的提升,对virtualenv指令进行的封装,使得使用更方便。
virtualenv 和 virtualwrapper需要使用pip安装, 因此本身就依赖于系统设定的Python解释器运行,而virtualwrapper更是依赖 VIRTUALENVWRAPPER_PYTHON这个环境变量指定python解释器的路径。
virtualenv常用操作
1.使用前创建一个项目的独立目录
mkdir projecttest
cd projecttest
2.创建一个纯净的3.5版本python环境
➜ projecttest $: virtualenv pure_3_5 --no-site-packages --python=python3.5
下面是一些创建成功的输出信息,它拷贝了系统存在的3.5解释器,并安装了setuptools, pip, wheel这三个基本工具。
Running virtualenv with interpreter /Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5
Using base prefix '/Library/Frameworks/Python.framework/Versions/3.5'
New python executable in /Users/Mike/Documents/projecttest/pure_3_5/bin/python3.5
Also creating executable in /Users/Mike/Documents/projecttest/pure_3_5/bin/python
Installing setuptools, pip, wheel...done.
此时当前目录下出现pure_3_5目录
➜ projecttest $: ls
➜ projecttest $: pure_3_5
这个目录下的bin、include、lib分别对环境操作工具、依赖库、安装的库进行分别管理,其中bin目录下的activate脚本是对虚拟环境的激活程序, 它里面包含了”激活”和”退出指令的实现”并将当前的虚拟环境添加到系统环境变量中,可以通过执行这个脚本来激活当前的虚拟环境:
➜ projecttest $: source pure_3_5/bin/activate
(pure_3_5) ➜ projecttest $:
这个时候可以按照项目需求安装需要的库:
(pure_3_5) ➜ projecttest $: pip install greenlet
安装的任何库都只会和当前的虚拟环境绑定,而不会影响到系统的Python环境。
查看一下当前已经安装的库:(pip、setuptools、wheel这三个是默认安装的)
(pure_3_5) ➜ projecttest $: pip list
greenlet (0.4.12)
pip (9.0.1)
setuptools (36.7.2)
wheel (0.30.0)
3.退出环境 可以使用deactive退出当前环境
(pure_3_5) ➜ projecttest $: deactivate
➜ projecttest $:
virtaulenvwrapper
virtaulenvwrapper是virtualenv的扩展包,用于更方便管理虚拟环境,它的主要亮点有:
1.可以将所有的虚拟环境整合到一个目录下,方便管理,而不是像virtualenv那样将虚拟环境放置在和项目同一个目录, 这样将每个环境与项目剥离开,使得每个环境的多次使用非常方便。
2.可以非常方便地对虚拟环境进行添加、删除、复制等管理操作,还可以很方便地对使用的环境进行切换。
安装virtaulenvwrapper:(使用了系统默认pip)
# 安装之前必须确保已经安装了virtualenv
pip3 install virtaulenvwrapper # Linux 需要使用sudo
在使用virtualenvwrapper之前,需要进行以下操作:
1.创建用来存放虚拟环境的目录
mkdir ~/.virtualenvs
2.添加以下环境变量(Linux可以在~/.bashrc添加 Mac可以在 ~/.bash_profile添加),以Mac为例:
export WORKON_HOME=~/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/Library/Frameworks/Python.framework/Versions/3.6/bin/python3
source /Library/Frameworks/Python.framework/Versions/3.6/bin/virtualenvwrapper.sh
如果使用的是Linux,~/.bashrc应该是这样配置的:
export WORKON_HOME=~/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh # 具体位置可通过which查找
3.载入刚刚添加的环境
# Mac
source ~/.bash_profile
# Linux
source ~/.bashrc
这样virtualenvwrapper便可以使用了。下面是几个常用的操作:
mkvirtualenv # 新建虚拟环境
lsvirtualenv # 列出所有的虚拟环境
workon # 进入或者切换虚拟环境
deactivate # 退出当前虚拟环境
rmvirtualenv # 删除虚拟环境
例如,和刚才一样创建一个纯净的Python3.5环境:
➜ ~ $: mkvirtualenv --no-site-packages --python=python3.5 pure3_5
(pure3_5) ➜ ~ $:
这个命令会在设置的虚拟环境目录下(~/.virtualenvs)创建环境,并执行这个环境的activate脚本。
使用workon切换虚拟环境
workon pure3_5
Python官方的venv
Python3.3 开始推出了venv模块,官方地址为https://docs.python.org/3/library/venv.html,这个模块的api可以帮助你创建虚拟环境,它的使用方式和virtualenv基本相同,同时在解释器被安装时就增加了可执行接口,如Python3.6解释器安装时,提供了系统命令venv,源码如下:
#!/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6
if __name__ == '__main__':
import sys
import pathlib
executable = pathlib.Path(sys.executable or 'python3').name
print('WARNING: the pyenv script is deprecated in favour of '
f'`{executable} -m venv`', file=sys.stderr)
rc = 1
try:
import venv
venv.main()
rc = 0
except Exception as e:
print('Error: %s' % e, file=sys.stderr)
sys.exit(rc)
不过目前来说这个模块以及相关命令的使用较少,virtualenv和virtualenvwrapper的配合使用是相当方便的。
pyenv virtualenv和virtualwrapper的更多相关文章
- Ubuntu16.04下部署 nginx+uwsgi+django1.9.7(虚拟环境pyenv+virtualenv)
由于用的新版本系统,和旧的稍有差别,在网上搜了很多相关资料,搞了三天终于搞好在Ubuntu16.04下的部署,接下来就详细写写步骤以及其中遇到的问题.前提是安装有虚拟环境pyenv+virtualen ...
- Mac 下实现 pyenv/virtualenv 与 Anaconda 的兼容
http://blog.csdn.net/vencent7/article/details/76849849 自己一直用的 pyenv 和 pyenv-virtualenv 管理不同的 python ...
- 安装pyenv virtualenv
地址:https://github.com/pyenv/pyenv-virtualenv Check out pyenv-virtualenv into plugin directory $ git ...
- 打造完美Python环境(pyenv, virtualenv, pip)
写在最前 在使用 Python 进行开发和部署的时候,经常会碰到Python版本或者依赖包或者对应版本不同导致各种意外情况发生. 本文将介绍如何通过 pyenv, virtualenv, pip三个工 ...
- Ubuntu下python使用pyenv+virtualenv进行版本和包隔离
安装pyenv 参考:https://github.com/pyenv/pyenv git clone https://github.com/pyenv/pyenv.git ~/.pyenv echo ...
- Anaconda, conda, pyenv, virtualenv的区别
1.Python环境 Python解释器--Python.exe Python包集合--Lib,包括自带包和第三方包 2.Anaconda--一个科学计算环境,Python的发行版本 包括了Conda ...
- CentOS下用pyenv 和 virtualenv 搭建单机多版本python 虚拟开发环境
安装 系统环境:CentOS 6.5 安装依赖 yum -y install gcc gcc-c++ make git patch openssl-devel zlib-devel readline- ...
- linux 下各个工具使用(screen、tmux,pyenv、virtualenv,pip国内源,tree)
一.多会话工具screen.tmux 两个都是多窗口工具.1.使用后wim出现配色问题:http://ibartman.com/2014/04/16/vim%20%E9%85%8D%E8%89%B2/ ...
- 通过pyenv和virtualenv创建多版本Python虚拟环境
虚拟环境使用第三方工具virtualenv创建,首先输入以下命令检查系统是否已经安装virtualenv. $ virtualenv --version 如果显示virtualenv版本号,则说明已经 ...
随机推荐
- Linux学习使用Vim
Vim是从 vi 发展出来的一个文本编辑器.vi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样.代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序 ...
- SAP SOAMANAGER报错原因与故障排除方法
一些刚刚接触到SAP Webservice的开发者由于对SAP Netweaver组件的不熟悉,往往在使用事物码SOAMANAGER进行webservice配置的时候,发现无法正常启动SOAMANAG ...
- CSPS模拟 61
T1 模拟 T2 ?? T3 哈希
- (十二)golang--进制和位运算
1.基本进制 (1)二进制:0,1,满2进1 在golang中,不能直接使用一个二进制表示一个整数,可以用八进制.十进制和十六进制表示 (2)十进制:0-9,满10进1 (3)八进制:0-7,满8进1 ...
- 问题 A: 雷神领域
传送门 题目描述 L君,S大陆首屈一指的天才魔法师,创造了一个新魔法:雷神领域. 这个魔法会首先在地面上形成正方网格魔法阵列,然后在某些位置召唤雷电轴标.注意:一个位置只能有一个雷电轴标存在. 雷电 ...
- 网页文件打包成.exe可执行文件
网页文件不止可以通过浏览器打开,也可以通过打包程序打包成.exe桌面可执行程序,这样写的网页文件就可以像桌面应用一样打开了.方法如下: 工具:NW.js.Enigma Virtual Box.资源编辑 ...
- Nginx正则配置
Nginx配置中Location的语法规则 location [ = | ~ | ~* | ^~ | !~ | !~* ] /uri/{ - } = 表示精确匹配 ~ 表示区分大小写正则匹配 ~* 表 ...
- access,trunk,hybrid端口分析
1.access 接收:当数据没有tag时打上pvidtag进入,若有则看是否与pvid相等,相等则接收,不想等则丢弃. 转发:看tag是否等于pvid,若等则去tag发送,否则不处理. 2.trun ...
- 腾讯正式开源图计算框架Plato,十亿级节点图计算进入分钟级时代
腾讯开源再次迎来重磅项目,14日,腾讯正式宣布开源高性能图计算框架Plato,这是在短短一周之内,开源的第五个重大项目. 相对于目前全球范围内其它的图计算框架,Plato可满足十亿级节点的超大规模图计 ...
- Hbase简介以及简单的入门操作
Hbase是一个分布式的.面向列的开源数据库,可实时的读写.随机访问超大规模的数据集. Hbase主要分为两种模型: 逻辑模型和物理模型 1. 逻辑模型 Hbase的名字的来源是Hadoop data ...