【建议收藏】Python虚拟环境最全教程,看这篇就够了!

本篇文章主要围绕Pyenv, Virtualenv, Virtualenvwrapper三个Python库展开讨论。

熟悉Python的朋友一定知道python虚拟环境, 它可以让我们在不同项目中拥有各自独立的依赖库空间, 从而保证各个项目的干净整洁,而笔者在工作中需要负责多个项目,因为历史原因有的项目还在使用python2系列的版本,有的则使用python3系列的版本。所以我需要一种方式可以在同一台电脑上可以安装多个不同版本的python来适应我的工作需求,那么pyenv就是我理想的管理工具。

image

Pyenv 简介

pyenv是一个python版本管理工具,可以方便用户在不同的python版本间切换,例如我电脑上已经安装了python2.7,我还想安装python3.7和3.8,那么通过pyenv可以非常方便的实现这种需求。

pyenv的作者是一位日本人,据说因为他本人不喜欢window平台, 故pyenv只支持linux系和mac平台, 不光现在不支持windows以后也不支持,所以在windows上开发的小伙伴无福消受了。

Pyenv官网: https://github.com/pyenv/pyenv

Pyenv安装

以下案例是在Centos6.7 x64系统中操作。

一. 安装git

image

二. 安装Python 编译依赖

image

三. 创建用户Python

image

四. 使用python用户登录后安装Pyenv

image

在线安装:

我们可以直接通过pyenv-installer插件来安装, PS: 在 https://github.com/pyenv/pyenv-installer 有安装文档,下载的 pyenv-installer 是一个shell脚本。

image

这里需要注意:如果curl出现 curl: (35) SSL connect error ,这是nss版本低导致的问题,可以配置一个有较新包的yum源, 然后更新nss

image

离线安装

如果上面的在线安装失败可以尝试这种方式,直接clone github仓储到指定目标文件目录

image

五. 在python用户的~/.bash_profile中追加

image

这样当用户启动的时候,会执行用户的.bash_profile中的脚本,就会启动pyenv。

安装好的pyenv就在~/.pyenv目录中。

Pyenv的使用

列出所有可用版本 pyenv install --list

image

在线安装指定版本 pyenv install 3.8.1

image

因为它从python官网下载python包, 在线安装可能较慢, 为了提速,可是选用cache方法:

首先在~/.pyenv目录下,新建cache目录,放入下载好的待安装版本的文件。

如果不确定要哪一个python安装包文件,把下载好的的xz、gz、tgz这几个文件都放到cache目录中去。

放好后直接执行:

image

列出当前所有已经安装的python版本 pyenv versions

image

前面打星号的表示当前目录正在使用的python版本

列出当前正在使用的python版本 pyenv version

image

global 全局设置 pyenv global 3.6.9

这里用global是作用于非root用户python用户上,如果是root用户安装,请不要使用global,否则影响太大。

比如,这里使用的CentOS6.7就是Python2.6,使用了global就成了3.x,会带来很不好的影响。

shell 会话设置 pyenv shell 3.8.2

影响只作用于当前会话, 关闭当前会话即失效

local本地设置 pyenv local 3.8.2 个人非常推荐这种方式

使用pyenv local设置从当前工作目录开始向下递归都继承这个设置。

取消local设置 pyenv local --unset

Pyenv 虚拟环境设置

为什么要使用虚拟环境?

因为刚才使用的Python环境都是一个公共的空间,如果多个项目使用不同Python版本开发,或者使用不同的Python版本部署运行,或者使用同样的版本开发的但不同项目使用了不同版本的库,等等这些问题都会带来冲突。最好的解决办法就是每一个项目独立运行自己的“独立小环境”中。

virtualenv 插件的使用

正常来说,pyenv-virtualenv插件是安装pyenv自带的,在pyenv的plugin目录里可以看到它

image

如果你的目录里没有,从github拉一份下来就好,项目地址:https://github.com/pyenv/pyenv-virtualenv,安装步骤README有写

image

Virtualenv

Virtualenv 简介

image

Virtualenv 安装

image

Virtualenv 使用

假设现在开发一个新的项目, 第一步我们需要先创建一套独立的python运行环境, 那么我们只需要这么做:

创建虚拟环境

image

virtualenv --no-site-packages ENV 执行这条命令会创建一个名为ENV的目录, ENV 目录下分别为bin, lib, pyvenv.cfg

bin 目录下是当前虚拟环境使用的Python解释器

lib 所有安装的python库都会放在这个目录中的lib/pythonx.x/site-packages/下

pyvenv.cfg 是当前虚拟环境的配置文件

如果你想创建指定python版本的虚拟环境可以使用下面这个命令

image

激活虚拟环境

image

当终端命令行开头出现(ENV)时说明已经成功进入虚拟环境, 我们可以执行 pip list 来查看当前依赖库

退出虚拟环境

image

当终端命令行开头的(ENV)消失时即表示已经成功退出虚拟环境

Virtualenv 参数

image

Virtualenvwrapper

Virtualenvwrapper 简介

上面提到的 virtualenv 可以创建一个虚拟的独立 Python 环境,但是 virtualenv 创建的环境相对分散不便于管理, 而Virtualenvwrapper 提供了一系列命令使得和虚拟环境工作变得轻松许多, 相对于virtualenv, Virtualenvwrapper有以下几个优点:

1. 将您的所有虚拟环境在一个地方

2. 包装用于管理虚拟环境(创建,删除,复制)

3. 使用一个命令来环境之间进行切换

Virtualenvwrapper 安装

image

安装之后还需要配置, 在.bashrc(或.zshrc)中添加下列内容:

image

注意:

virtualenvwrapper.sh 文件位置根据你的实际目录填写, 不确定的话可以使用find / -name virtualenvwrapper.sh查找一下

Virtualenvwrapper 使用

创建虚拟环境

image

创建指定的python版本的虚拟环境

image

激活虚拟环境

image

导航到当前激活的虚拟环境的目录中

image

退出虚拟环境 (同virtualenv一样)

image

列出所有虚拟环境

workon 和lsvirtualenv都可以列举出已创建的所有虚拟环境

image

删除虚拟环境

image

总结

Pyenv

在创建一个新的python版本时,完全拷贝一个现成的python环境,新的python版本,可作为global

Virtualenv

在创建一个新的python版本时,它生成一套软链到现有的python环境,即执行环境和版本不变,也可以制定一个python解释器让它来virtual,但是它的site-packages是独立的。

针对一个应用,建立一个独立的python运行环境。

Virtualenvwrapper

Virtualenvwrapper 是对 virtualenv 的扩展,用来管理全部的虚拟环境。

更多干货内容,欢迎关注公众号:知了python

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,509评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,806评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,875评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,441评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,488评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,365评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,190评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,062评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,500评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,706评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,834评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,559评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,167评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,779评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,912评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,958评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,779评论 2 354