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. Mysql数据库(十)MySQL性能优化

    一.优化概述 为了提高MySQL数据库的性能,不要进行一系列的优化措施.如果MySQL数据库需要进行大量的查询操作,那么就需要对查询语句进行优化.对于耗费时间的查询语句进行优化,可以提高整体地查询速度 ...

  2. 2017.12.21 学习vue的新得

    温故而知新,这句话说的真的有道理.每次回顾vue总会学到不一样的知识点,我就在想,我第一遍到底看了什么? 废话不多说,简要记录今天的所得: 1.v-if 与 v-show 同:都是条件渲染 异:渲染的 ...

  3. iOS 原生库对 https 的处理

    转载自:swift cafe 使用 NSURLSession NSURLSession 是 iOS 原生提供的网络处理库.它提供了丰富的接口以及配置选项,满足我们平时网络处理的大部分需求,同时它也支持 ...

  4. Flask:对项目文件进行拆分

    在工作中,我们不可能将ORM的配置,ORM的操作,ORM的使用以及视图放到同一个文件里,大多数时候Flask都是按照MVC的设计理念进行部署的 1.MVC和MTV (1)MVC(Model-View- ...

  5. Linux CentOS7部署ASP.NET Core应用程序,并配置Nginx反向代理服务器

    前言: 本篇文章主要讲解的是如何在Linux CentOS7操作系统搭建.NET Core运行环境并发布ASP.NET Core应用程序,以及配置Nginx反向代理服务器.因为公司的项目一直都是托管在 ...

  6. SpringBoot中在除Controller层 使用Validation的方式

    说明:Validation 在Controller层使用Validation应该都使用过了,以下方式可以使用 Validation 在Service层完成对dto的属性校验,避免写一堆的 if els ...

  7. [知识图谱]Neo4j知识图谱构建(neo4j-python-pandas-py2neo-v3)

    neo4j-python-pandas-py2neo-v3 利用pandas将excel中数据抽取,以三元组形式加载到neo4j数据库中构建相关知识图谱 Neo4j知识图谱构建 1.运行环境: pyt ...

  8. 关于Python中的yield的理解

    生成器:yield表达式构成的函数就是生成器:每一个生成器都是一个迭代器(但是迭代器不一定是生成器).return就是迭代器: yield的功能类似于return,不同之处在于它返回的是生成器. 什么 ...

  9. 你知道MySQL中的主从延迟吗?

    前言 在一个MySQL主备关系中,每个备库接受主库的binlog并执行. 正常情况下,只要主库执行更新生成所有的binlog,都可以传到备库并被正常的执行,这样备库就能够达到跟主库一样的状态,这就是最 ...

  10. php swoole异步处理mysql

    php swoole异步处理mysql <pre>//创建websocket服务器对象,监听0.0.0.0:9509端口//异步测试$ws = new swoole_websocket_s ...