- A+
本文经作者授权发布,未经授权请勿转载。
文 | tenlau(劉騰龍)@Tencent
自 Python3 出现后,很多lib的架构及用法已改变,以往 Python2 卻不支持,令不少开发者感得困扰,要解决这个 Python2 及3環境的切换问题,我们需要一个能夠把不同开发环境分开的工具。
简单搜索,我们发现了三个可以解决这个问题的工具,他们分别是:
-
virtualenv
-
pythonbrew
-
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,详细图示:
比较
原理 | 优点 | |
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
题图:pexels,CC0 授权。