Python版本切换与虚拟环境管理

Python2和Python3之间存在较大的差异,并且由于各种原因导致Python2和Python3长期共存。我们在使用的时候,可能会遇到不同的Python版本问题或者是Python工作环境的切换问题。这里介绍pyenv、virtualenv、conda、venv,pyenv用于管理不同的Python版本,virtualenv、conda以及venv管理不同的工作环境。

1. pyenv管理不同的Python版本

我们直接从github上clone项目到本地

git clone https://github.com/pyenv/pyenv.git ~/.pyenv

这里写图片描述

把以下内容添加进~/.bashrc文件

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PATH:$PYENV_ROOT/bin"
eval "$(pyenv init -)"

这里写图片描述
接着,

source ~/.bashrc

我们通过pyenv的help命令验证pyenv是否正确安装以及获取pyenv的帮助信息

pyenv --help

这里写图片描述
通过pyenv的install命令,查看pyenv当前支持哪些Python版本

pyenv install --list

这里写图片描述

使用pyenv安装不同的Python版本,例如安装Python 3.5.0

pyenv install 3.5.0

这里写图片描述
如果遇到 pyenv: BUILD FAILED(Ubuntu 16.04 using python-build 1.2.4-7-gcbf3983)的错误提示
则运行以下代码安装依赖包

sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev

安装Python 2.7.11以及Python 3.5.3

pyenv install 2.7.11

这里写图片描述

pyenv install 3.5.3

这里写图片描述
查看当前系统中包含的Python版本

pyenv versions

这里写图片描述
*表示当前正在使用的Python版本

使用pyenv以后,可以快速地切换Python的版本。切换Python版本以后,与版本相关的依赖也会一起切换。因此,我们不用担心不同的版本在系统中是否会相互干扰。例如,切换Python版本以后,相应的pip也会跟着切换,所以不用担心自己用pip版本和Python版本不匹配的问题,如下所示:

pyenv global 2.7.11

这里写图片描述
这里写图片描述
如果想要删除Python版本,则使用uninstall命令

pyenv uninstall 2.7.11
2. 使用virtualenv管理虚拟环境

virtualenv用以隔离不同项目的工作环境。例如,用户希望在项目A中使用Flask 0.8这个版本,与此同时,又想在项目B中使用Flask 0.9这个版本。如果我们全局安装Flask,则无法满足用户的需求。这时,我们就可以使用virtualenv。

virtualenv本身是一个独立的工具,用户可以不使用pyenv单独使用virtualenv。但是,如果你使用了pyenv,就需要安装pyenv-virtualenv插件而不是virtualenv软件来使用virtualenv的功能。

我们直接从github上clone项目到本地

git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv

这里写图片描述
把以下内容添加进~/.bashrc文件

eval "$(pyenv virtualenv-init -)"

接着,

source ~/.bashrc

查看virtualenv的帮助信息

pyenv help virtualenv

这里写图片描述
有了pyenv-virtualenv以后,我们可以为同一个Python解释器,创建多个不同的”工作环境”。例如,

pyenv virtualenv 2.7.11 first_project
pyenv virtualenv 2.7.11 second_project

这里写图片描述
然后,可以使用pyenv virtualenvs子命令查看工作环境

pyenv virtualenvs

这里写图片描述
这里可以看到我们刚刚创建的两个虚拟环境。

激活first_project虚拟环境,安装flask0.8

pyenv activate first_project
pip install flask==0.8
pyenv deactivate

这里写图片描述
激活second_project虚拟环境,安装flask0.9

pyenv activate second_project
pip install flask==0.9
pyenv deactivate

这里写图片描述

如上,有了上述的虚拟环境,我们便可以在项目中使用flask0.8和flask0.9了。只需进行环境切换就行

如果想要删除虚拟环境,则使用

pyenv virtualenv-delete first_project
pyenv virtualenv-delete second_project

再次使用pyenv virtualenvs查看虚拟环境,则为空
这里写图片描述

3. conda管理虚拟环境

conda管理虚拟环境是挺好用的,我目前也是使用这个。
可以通过官网下载Anaconda3,下载安装之后便可使用(安装过程便不再赘述)

使用conda查看已安装的虚拟环境

conda info -e

这里写图片描述

创建一个名为python36的环境,指定Python版本是3.6.0

conda create --name python36 python=3.6.0

t

激活虚拟环境python36

source activate python36

退出虚拟环境python36

source deactivate

删除名为python36的虚拟环境

conda remove --name python36 --all

这里写图片描述
再次查看虚拟环境,我们可以看到虚拟环境python36已经被删除了

conda info -e

这里写图片描述

4. venv管理虚拟环境

Python3.3以上的版本通过venv模块原生支持虚拟环境,可以代替Python之前的virtualenv

该venv模块提供了创建轻量级”虚拟环境”,提供与系统Python的隔离支持。每一个虚拟环境都有其自己的Python二进制(允许有不同的Python版本创作环境),并且可以拥有自己独立的一套Python包。其最大的好处是,可以让每一个python项目单独使用一个环境,而不会影响python系统环境,也不会影响其他项目的环境。

$ python3 -m venv <DIR> # 创建名为XX的虚拟环境
$ source <DIR>/bin/activate # 激活虚拟环境
$ deactivate # 关闭虚拟环境

Deprecated since version 3.6: pyvenv was the recommended tool for creating virtual environments for Python 3.3 and 3.4, and is deprecated in Python 3.6.
Changed in version 3.5: The use of venv is now recommended for creating virtual environments.

参考链接:

[1] https://zhuanlan.zhihu.com/p/27294128
[2] https://github.com/pyenv/pyenv
[3] https://stackoverflow.com/questions/37227854/pyenv-build-failed-ubuntu-15-04-using-python-build-20160509
[4] https://github.com/pyenv/pyenv-virtualenv
[5] https://blog.csdn.net/guan__hua/article/details/61240932
[6] https://docs.python.org/3/library/venv.html

猜你喜欢

转载自blog.csdn.net/Jonms/article/details/80707310