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的更多相关文章

  1. Ubuntu16.04下部署 nginx+uwsgi+django1.9.7(虚拟环境pyenv+virtualenv)

    由于用的新版本系统,和旧的稍有差别,在网上搜了很多相关资料,搞了三天终于搞好在Ubuntu16.04下的部署,接下来就详细写写步骤以及其中遇到的问题.前提是安装有虚拟环境pyenv+virtualen ...

  2. Mac 下实现 pyenv/virtualenv 与 Anaconda 的兼容

    http://blog.csdn.net/vencent7/article/details/76849849 自己一直用的 pyenv 和 pyenv-virtualenv 管理不同的 python ...

  3. 安装pyenv virtualenv

    地址:https://github.com/pyenv/pyenv-virtualenv Check out pyenv-virtualenv into plugin directory $ git ...

  4. 打造完美Python环境(pyenv, virtualenv, pip)

    写在最前 在使用 Python 进行开发和部署的时候,经常会碰到Python版本或者依赖包或者对应版本不同导致各种意外情况发生. 本文将介绍如何通过 pyenv, virtualenv, pip三个工 ...

  5. Ubuntu下python使用pyenv+virtualenv进行版本和包隔离

    安装pyenv 参考:https://github.com/pyenv/pyenv git clone https://github.com/pyenv/pyenv.git ~/.pyenv echo ...

  6. Anaconda, conda, pyenv, virtualenv的区别

    1.Python环境 Python解释器--Python.exe Python包集合--Lib,包括自带包和第三方包 2.Anaconda--一个科学计算环境,Python的发行版本 包括了Conda ...

  7. CentOS下用pyenv 和 virtualenv 搭建单机多版本python 虚拟开发环境

    安装 系统环境:CentOS 6.5 安装依赖 yum -y install gcc gcc-c++ make git patch openssl-devel zlib-devel readline- ...

  8. 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/ ...

  9. 通过pyenv和virtualenv创建多版本Python虚拟环境

    虚拟环境使用第三方工具virtualenv创建,首先输入以下命令检查系统是否已经安装virtualenv. $ virtualenv --version 如果显示virtualenv版本号,则说明已经 ...

随机推荐

  1. SpringBoot整合Redis在可视化工具乱码问题,以及常用的api

     pom依赖: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spr ...

  2. Windows 10 与 kali 双系统安装

    一.教程中用到的工具如下: 1.kali 2019镜像, 2.U盘 现在最低也有8G吧 3.软碟通 ,U盘刻录工具 4.win 10系统要留出一个空的硬盘,哪个盘的空间比较大可以压缩出大概100G的空 ...

  3. 设计模式之代理模式(Java)

    简介 代理模式出场率真的相当的高,几乎所有框架中无一例外都用到了代理模式,所以了解一下收益还是很高的. 代理模式是什么 如果用一句话来描述代理模式: 代理模式就是为其他对象提供一种代理以控制对被代理对 ...

  4. Pandas分类(category)数据处理

    分类(Category)数据:直白来说,就是取值为有限的,或者说是固定数量的可能值.例如:性别.血型 指定数据类型构建分类数据 dtype="category" 以血型为例,创建一 ...

  5. csps模拟测试50反思

    又考崩了,T1一眼秒掉错误思路,然后迅速码完,并码完错误暴力,对拍拍上,以为AC.T2想到了二维莫队,发现是子任务就没去打,一直在想别的,T3最后想到60分打法,没有打完,也没时间暴力,挂掉.T2还有 ...

  6. 如何在双向绑定的Image控件上绘制自定义标记(wpf)

    我们的需求是什么? 答:需要在图片上增加一些自定义标记,例如:2个图片对比时,对相同区域进行高亮. 先上效果图: 设计思路 1.概述 1.通过TargeUpdated事件,重新绘制图片进行替换. 2. ...

  7. 虚拟机操作系统内设置固定IP以及克隆虚拟机

    以下为我自己整理的克隆虚拟机和设置固定IP的方法,记录一下,以防忘记: 桥接模式网络配置 1.配置ip地址等信息在/etc/sysconfig/network-scripts/ifcfg-ens33文 ...

  8. NOIP 模拟22

    这次考试真的是像教练说的真的挺难的,但是人家rank1还是100+, 但是咕咕蛊!

  9. 只需十四步:从零开始掌握Python机器学习(附资源)

    转载:只需十四步:从零开始掌握Python机器学习(附资源) Python 可以说是现在最流行的机器学习语言,而且你也能在网上找到大量的资源.你现在也在考虑从 Python 入门机器学习吗?本教程或许 ...

  10. 小白学 Python(22):time 和 calendar 模块简单使用

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...