社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

有关三个 Python 虚拟环境管理工具的探讨

编程派 • 7 年前 • 824 次点击  

本文经作者授权发布,未经授权请勿转载。

文 | tenlau(劉騰龍)@Tencent

自 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 为解释器的环境:

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

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

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

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

env2.7

env3.4

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


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




    
  1. source env2.7/bin/activate

  2. source env3.4/bin/activate

pyenv

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

  1. pyenv install --list

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

  • 2.7.9

  • 3.6.1

  • anaconda3-4.4.0

  • ironpython-2.7.7

安装 Python 2.7.9 的版本

  1. pyenv install 2.7.9

切换 Python 2.7.9 的版本

  1. pyenv global 2.7.9

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

  1. 2.7.9

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


比较

原理优点
Virtualenv 进入特定目录,在虚拟环境(局域)下运作。Python 版本一样,都可创建无限的局域环境,方便开发者在相同环境使用不同的 site-packages。
pyenv利用shims 进行全域切换 Python的不同版本。Python 从云端下载及即时安装,不需预先在本地安装不同版本才使用。

参考

  1. virtualenv 安装及使用方法:https://virtualenv.pypa.io/en/stable

  2. pyenv 安装及使用方法:https://github.com/pyenv/pyenv

  3. Linux 套件 - Tree 的安装及使用方法:https://www.computerhope.com/unix/tree.htm



题图:pexels,CC0 授权。

点击阅读原文,查看更多 Python 教程和资源。


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/InMFkxn2fB
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/2435
 
824 次点击