virtualenv 、pythonbrew 和 pyenv 的探讨

作者:劉騰龍

导语

自 Python3 出现后,很多lib的架构及用法已改变,以往 Python2 卻不支持,令不少开发者感得困扰,要解决这个 Python2 及3環境的切换问题,我们需要一个能夠把不同开发环境分开的工具。

简单搜索,我们发现了三个可以解决这个问题的工具,他们分别是:

  1. virtualenv
  2. pythonbrew
  3. pyenv

pythonbrew

在Github官方看到有关pythonbrew已经停止更新的讯息,并且鼓励用家使用pyenv,其实pythonbrew与pyenv基本上是同样的工具,这样我们便剩下两个选择了。

virtualenv

首先我们先说Virtualenv (請先安裝該套件),运作原理如下:

在Linux 上安装不同的python版本,比如说Python2.7及Python3.2。

创建以Python2.7为解释器的环境:

virtualenv -p /usr/bin/python2.7 env2.7

创建以Python3.2为解释器的环境:

virtualenv -p /usr/bin/python3.2 env3.4

用Linux套件Tree查看两个环境的目录:

env2.7

env3.4

当我们创建不同的环境时,virtualenv会把系统内安装了的各 Python版本的相关库及套件复制到我们的指定目录下,以目录来隔离各版本的 Python,详细图示:

日后我们只要激活所需环境便可在不同环境进行开发:

 source env2.7/bin/activate
 source env3.4/bin/activate

pyenv

顺利安装了pyenv后,查询可安装的版本。

pyenv install --list

我们可以看到不同的Python版本,因为列表很长,只列举当中几个:

  • 2.7.9
  • 3.6.1
  • anaconda3-4.4.0
  • ironpython-2.7.7

安装Python 2.7.9的版本

pyenv install 2.7.9

切换Python 2.7.9的版本

pyenv global 2.7.9

在/home/user/.pyenv/versions目录下便会看到:

2.7.9

当选择该 Python版本安装时,pyenv会从云端下载有关套件并储存在 .pyenv/versions/ 目录下,环境切换则透过嵌入模组 shims 注入路径来决定使用什么版本的Python,详细图示:

比较

标题1

标题2

标题3

文本1

文本2

文本3

原理

优点

Virtualenv

进入特定目录,在虚拟环境(局域)下运作。

Python 版本一样,都可创建无限的局域环境,方便开发者在相同环境使用不同的 site-packages。

pyenv

利用shims 进行全域切换 Python的不同版本。

Python 从云端下载及即时安装,不需预先在本地安装不同版本才使用。

参考

virtualenv 安装及使用方法:https://virtualenv.pypa.io/en/stable pyenv 安装及使用方法:https://github.com/pyenv/pyenv Linux套件 - Tree 的安装及使用方法:https://www.computerhope.com/unix/tree.htm

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Laoqi's Linux运维专列

linux安全配置

今天清早登录服务器发现很多暴力狗(使用ssh端口破解登录密码),真不知道这些人有啥意思,破解了无非是把我的服务器当作肉鸡再去攻击其他服务器,目的无非就是证明你有...

2975
来自专栏大闲人柴毛毛

架构高性能网站秘笈(五)——Web组件分离

什么是Web组件? 网站的静态网页HTML、JavaScript脚本、CSS样式、图片、动态数据称为网站的Web组件。也就是说,一个Web应用由各种各样的We...

3708
来自专栏有趣的Python

2- vue django restful framework 打造生鲜超市 -环境搭建

使用Python3.6与Django2.0.2(Django-rest-framework)以及前端vue开发的前后端分离的商城网站 项目支持支付宝支付(...

3267
来自专栏FreeBuf

任意用户密码重置(三):用户混淆

在逻辑漏洞中,任意用户密码重置最为常见,可能出现在新用户注册页面,也可能是用户登录后重置密码的页面,或者用户忘记密码时的密码找回页面,其中,密码找回功能是重灾区...

1795
来自专栏运维小白

Linux基础(day40)

11.6 MariaDB安装 安装mariadb cd /usr/local/src wget https://downloads.mariadb.com/Ma...

2456
来自专栏PHP在线

Redis保存PHP Session方法

Redis保存session用的命令是setex,用redis-cli monitor实时监测可以检测到。

1356
来自专栏JetpropelledSnake

Linux学习笔记之Linux启动级别

对于绝大多数Linux程序员来说,进入Linux系统后一般看到的是黑乎乎的界面(开发模式),因为系统如果启动选择开发模式,会减少启动时间,优化内存等。但是通常我...

401
来自专栏云计算教程系列

如何在Ubuntu 16.04上安装和配置GitLab

GitLab CE或Community Edition是一个开源应用程序,主要用于托管Git存储库,还有其他与开发相关的功能,如问题跟踪。它旨在使用你自己的基础...

1143
来自专栏LIN_ZONE

macOS Sierra上面的php开发环境安装

启动apache时,解决  How to Fix AH00558 and AH00557 httpd apr_sockaddr_info_get() Error...

812
来自专栏微信小程序开发

小程序之间互相跳转如何实现,以及注意点儿

知晓程序员,专注微信小程序开发 前言:在小程序里可以打开另一个小程序,让小程序之间可以互相连接跳转,类似于网页之间通过URL链接互相跳转。不仅可以打开另一个小程...

1.4K8

扫码关注云+社区