前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python版本切换与虚拟环境管理

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

作者头像
py3study
发布2020-01-06 18:56:26
4.5K0
发布2020-01-06 18:56:26
举报
文章被收录于专栏:python3python3

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

1. pyenv管理不同的Python版本

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

代码语言:javascript
复制
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
这里写图片描述
这里写图片描述

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

代码语言:javascript
复制
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PATH:$PYENV_ROOT/bin"
eval "$(pyenv init -)"
这里写图片描述
这里写图片描述

接着,

代码语言:javascript
复制
source ~/.bashrc

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

代码语言:javascript
复制
pyenv --help
这里写图片描述
这里写图片描述

通过pyenv的install命令,查看pyenv当前支持哪些Python版本

代码语言:javascript
复制
pyenv install --list
这里写图片描述
这里写图片描述

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

代码语言:javascript
复制
pyenv install 3.5.0
这里写图片描述
这里写图片描述

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

代码语言:javascript
复制
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

代码语言:javascript
复制
pyenv install 2.7.11
这里写图片描述
这里写图片描述
代码语言:javascript
复制
pyenv install 3.5.3
这里写图片描述
这里写图片描述

查看当前系统中包含的Python版本

代码语言:javascript
复制
pyenv versions
这里写图片描述
这里写图片描述

*表示当前正在使用的Python版本

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

代码语言:javascript
复制
pyenv global 2.7.11
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

如果想要删除Python版本,则使用uninstall命令

代码语言:javascript
复制
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项目到本地

代码语言:javascript
复制
git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
这里写图片描述
这里写图片描述

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

代码语言:javascript
复制
eval "$(pyenv virtualenv-init -)"

接着,

代码语言:javascript
复制
source ~/.bashrc

查看virtualenv的帮助信息

代码语言:javascript
复制
pyenv help virtualenv
这里写图片描述
这里写图片描述

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

代码语言:javascript
复制
pyenv virtualenv 2.7.11 first_project
pyenv virtualenv 2.7.11 second_project
这里写图片描述
这里写图片描述

然后,可以使用pyenv virtualenvs子命令查看工作环境

代码语言:javascript
复制
pyenv virtualenvs
这里写图片描述
这里写图片描述

这里可以看到我们刚刚创建的两个虚拟环境。

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

代码语言:javascript
复制
pyenv activate first_project
pip install flask==0.8
pyenv deactivate
这里写图片描述
这里写图片描述

激活second_project虚拟环境,安装flask0.9

代码语言:javascript
复制
pyenv activate second_project
pip install flask==0.9
pyenv deactivate
这里写图片描述
这里写图片描述

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

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

代码语言:javascript
复制
pyenv virtualenv-delete first_project
pyenv virtualenv-delete second_project

再次使用pyenv virtualenvs查看虚拟环境,则为空

这里写图片描述
这里写图片描述
3. conda管理虚拟环境

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

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

代码语言:javascript
复制
conda info -e
这里写图片描述
这里写图片描述

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

代码语言:javascript
复制
conda create --name python36 python=3.6.0
t
t

激活虚拟环境python36

代码语言:javascript
复制
source activate python36

退出虚拟环境python36

代码语言:javascript
复制
source deactivate

删除名为python36的虚拟环境

代码语言:javascript
复制
conda remove --name python36 --all
这里写图片描述
这里写图片描述

再次查看虚拟环境,我们可以看到虚拟环境python36已经被删除了

代码语言:javascript
复制
conda info -e
这里写图片描述
这里写图片描述
4. venv管理虚拟环境

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

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

代码语言:javascript
复制
$ 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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. pyenv管理不同的Python版本
  • 2. 使用virtualenv管理虚拟环境
  • 3. conda管理虚拟环境
  • 4. venv管理虚拟环境
  • 参考链接:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档