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版本号,则说明已经 ...
随机推荐
- (七)javac编译
文章目录 1.基本格式 2.目标路径 2.1 缺省项 2.2 指定路径 2.2.1 全路径 2.2.2 相对路径 3.源文件 3.1 无第三方库 3.1.1 基本方法 3.1.2 添加目录 3.1.3 ...
- SpringBoot整合Swagger2(Demo示例)
写在前面 由于公司项目采用前后端分离,维护接口文档基本上是必不可少的工作.一个理想的状态是设计好后,接口文档发给前端和后端,大伙按照既定的规则各自开发,开发好了对接上了就可以上线了.当然这是一种非常理 ...
- Connection activation failed Device not managed by NetworkManager
1)查看NetworkManager服务是否启动 ps aux |grep NetworkManager 使用service NetworkManager start 命令启动该网络管理程序 2) 一 ...
- C/C++——strcpy函数的实现
题目: 已知strcpy函数的原型是: char * strcpy(char * strDest,const char * strSrc); 1.不调用库函数,实现st ...
- 在.NET Core 3.0中发布单个EXE文件
假设我有一个简单的“ Hello World”控制台应用程序,我想发送给朋友来运行.朋友没有安装.NET Core,所以我知道我需要为他构建一个独立的应用程序.很简单,我只需在项目目录中运行以下命令: ...
- Java后端开发工作 - 写接口
我在公司的工作内容是,对于一个BS应用,负责服务器端开发工作,Java语言.与前端开发人员合作,最终提供给前端RESTFUL接口,保证页面正常响应. 经验之谈 一个接口可以理解为一个业务逻辑,一个业务 ...
- WebApi -用户登录后SessionId未更新
描工具检测出.net的程序有会话标识未更新这个漏洞 用户尚未登录时就有session cookie产生.可以尝试在打开页面的时候,让这个cookie过期.等到用户再登陆的时候就会生成一个新的sessi ...
- 前端技术之:使用npx创建一个Nuxt.js项目
$ npx create-nuxt-app my-first-nuxtjs npx: 401 安装成功,用时 43.891 秒 > Generating Nuxt.js project in / ...
- Markdown 编辑图片居中
Markdown 编辑图片居中 <center><p></p& ...
- 记录一次C#的asyn和await
static void Main(string[] args) { var d = new NavDownLoader(); Task<bool> success = d.DownLoad ...