写在之前

我们都知道现在的 Python 有 Python2 和 Python3,但是由于各种乱七八糟的原因导致这俩哥们要长期共存,荣辱与共,尴尬的是这哥俩的差异还比较大,在很多时候我们可能要同时用到它们,所以就要在 Python2 和 Python3 之间来回的无缝切换。

安装不同版本的 Python 我已经够累了,还要在不同版本的 Python 之间切换来切换去那不更得累死?而且不同版本之间并存很容易出现某些玄学的问题。当年选 Python 就是看中它的简洁优雅,省心省力,没理由让我在这种版本问题上操心操力,肯定有什么解决办法,果不其然,还真的被我找到了,那就是我今天要给大家介绍的「pyenv」。

「pyenv」 是一个 Python 版本的管理工具,可以进行全局的 Python 版本切换,也可以给单个项目提供对应的 Python 版本。用了 「pyenv」以后,就可以很容易的安装不同的 Python 版本,不同版本之间的切换也变得 so easy。

pyenv 的安装 & 使用

pyenv 的安装

安装 pyenv,在这里我说一个手动安装的办法,我们可以从 GitHub 直接下载到本地,首先执行下面的命令:

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

~/.pyenv 是你安装 pyenv 的时候想要安装的路径,推荐大家也安装在这个路径下。

安装的过程如下:

Cloning into '/Users/rocky/.pyenv'...
remote: Enumerating objects: 34, done.
remote: Counting objects: 100% (34/34), done.
remote: Compressing objects: 100% (23/23), done.
remote: Total 16518 (delta 12), reused 23 (delta 8), pack-reused 16484
Receiving objects: 100% (16518/16518), 3.22 MiB | 26.00 KiB/s, done.
Resolving deltas: 100% (11199/11199), done.

我们可以看到已经安装成功,接下来我们要添加一下环境变量:

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc

环境变量配置成功,接下来我们要重新载入一下配置文件,你也可以退出以后重新登陆,这样是为了让 ~/.bashrc 中的配置生效。在这里推荐一个做法,可以用 source 命令重新载入配置文件:

source ~/.bashrc

就这样,「pyenv」就安装完成了,我们可以通过命令行来验证一下它是否安装成功:

pyenv --help

上面命令行的意思是获取 prenv 的帮助信息。

prenv 的使用

我们可以通过 prenv 的 install --list 命令来查看 prenv 当前支持哪些 Python 版本,具体如下所示:

liyans-MacBook-Pro:~ rocky$ pyenv install --list
Available versions:
2.1.3
2.2.3
2.3.7
2.4
2.4.1
...

因为版本什么的实在太多,这里就不全部列出来了,具体的你可以在自己的电脑上试一下。如果你仔细看就会发现 pyenv 不但可以安装不同版本的 Python,还可以安装不同的 Python 实现,喜欢尝新的同学,可以尝试安装一下最新版本的 Python 使用。

具体的想安装某个版本的 Python,只需要 pyenv install 后面跟上想要安装的版本号即可,比如想安装 3.7.1:

pyenv install -v 3.7.1

如果想查看一下当前你的系统中安装的 Python 版本,可以输入下面的命令:

pyenv versions

显示如下:

* system (set by /Users/rocky/.pyenv/version)
2.7.1
3.7.1

由于我安装了 2 个 Python 版本,加上 mac 自身存在的 Python,当前的系统里面存在了 3 个不同的 Python 版本。前面带 「*」表示的是当前正在使用的版本,如果你想切换成别的版本,可以用 prenv global 来选择,具体的操作如下所示:

pyenv global 3.7.1

然后在查看一下当前的 versions,如下所示:

pyenv versions
system
2.7.1
* 3.7.1 (set by /Users/rocky/.pyenv/version)

使用 pyenv 以后,可以很快速的切换 Python 版本,与之同时被切换的是与版本相关的依赖,例如你切换成 Python3 版本以后,相应的 pip 也会被切换成 pip3,所以不用担心自己所用的 pip 和当前 Python 版本不匹配。由点及面,所以我们就不用担心不同的版本会在系统中起冲突。

当人能装就能删,如果你想要删除 Python 版本,使用 uninstall 即可,同样是后面跟上版本号,比如删除 2.7.1:

pyenv uninstall 2.7.1

写在之后

更多内容,欢迎关注公众号「Python空间」,期待和你的交流。

安装的 Python 版本太多互相干扰?pyenv 建议了解一下。的更多相关文章

  1. Pycharm选择pyenv安装的Python版本

    在macOS上使用pyenv实现Python多版本共存后,pyenv安装的Python版本存在于macOS下的 ~/.pyenv/versions/下. 在Pycharm时,选择此目录下对应的版本即可 ...

  2. windows 如何将安装Anaconda之前已经安装的python版本(中已安装的库)移动到 Anaconda中

    题目]如何将安装Anaconda之前已经安装的python版本(中已安装的库)移动到 Anaconda中 一.概述 之前安装tensorflow的安装了anaconda并用它进行安装,anaconda ...

  3. Ubuntu中安装gdal python版本

    安装过程: python包是从C++包中编译出来的,所以需要将源码下载进行编译安装 1.GDAL中的矢量数据处理OGR依赖于Geos,在安装GDAL之前要安装Geos Geos的下载地址:http:/ ...

  4. 使用pip一次升级所有安装的Python包(太牛了)

    import pip from subprocess import call for dist in pip.get_installed_distributions(): call("pip ...

  5. 安装哪个python版本比较好

    四.电脑是32位选择第一个,64为选择第二个

  6. Linux安装多个Python版本

    服务器上的Python版本太老了,需要安装一个新的Python版本,才能跑我的代码.因为环境的需要,但是又不能卸载老的版本,所以安装一个新的,使用软链来进行升级. 使用系统自带的yum,apt-get ...

  7. .windows安装使用这些偏底层的Python扩展太

    .windows安装使用这些偏底层的Python扩展太不爽了,怎么彻底解决 error: Unable to find vcvarsall.bat呢? 1.不要按网上说的,安装MinGW,然后在“.. ...

  8. Linux系统之路——python多版本共存问题(ps:自行切换python版本,pip安装遇到的一些问题)

    经常遇到这样的情况: 系统自带的Python是2.6,自己需要Python 2.7中的某些特性: 系统自带的Python是2.x,自己需要Python 3.x: 此时需要在系统中安装多个Python, ...

  9. 使用pyenv在系统中安装多个版本的python

    pyenv的安装与使用 如果没有安装git,首先要安装git apt-get install git 安装完成后,使用自动安装程序提供的单行程进行安装: curl -L https://github. ...

随机推荐

  1. Windows系统HTTP身份验证方法

    当Windows客户端尝试使用HTTP协议访问基于Web的资源时,会在客户端和服务器之间建立"对话".换句话说,服务器告诉客户端,访问资源之前进行身份验证 ,并且服务器还告诉客户端 ...

  2. [VC]socket含义

    两个程序之间的通信方法.Socket 是一种识别码,应用程式可用此唯一识别通信端点.用户创建 Socket 地址与Socket 的关联性后,便可创建通信协议地址与Socket 的关联性.

  3. EF和linq语句查询条件不等于某个参数出现的问题

    where t.a!=字符串   这是错误的写法,正确为 where t.a!=字符串.trim() 其他类型变量需要保持实体类型和查询条件参数的类型是一致的,不然出现的语句可能会是 类似`Exten ...

  4. bzoj2600 [Ioi2011]ricehub

    Description 乡间有一条笔直而长的路称为“米道”.沿着这条米道上 R 块稻田,每块稻田的坐标均为一个 1 到 L 之间(含 1 和 L)的整数.这些稻田按照坐标以不减的顺序给出,即对于 0 ...

  5. Linux学习记录(一)

    1.Linux的简介 1.1.Linux的概述 Linux是基于Unix的开源免费的操作系统,由于系统的稳定性和安全性几乎成为程序代码运行的最佳系统环境.Linux是由Linus Torvalds(林 ...

  6. c++ 循环程序的作业,2017年10月10日作业题。

    作业1: 需求:输出一个由 * 符号所组成的矩形,要求每行有50个 * ,一共需要有60行.使用双重for循环完成. 作业2: 需求:输出一个由 * 符号所组成的三角形,要求第一行一个 * ,第二行 ...

  7. 把网上图片下载到本地的java工具类

    package com.swift; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; ...

  8. iOS常用第三方类库 Xcode插件

    第三方类库(github地址): 1.AFNetworking 网络数据     https://github.com/AFNetworking/AFNetworking 2.SDWebImage 图 ...

  9. 用css去除chrome、safari等webikt内核浏览器对控件默认样式

    有这么一个webkit的私有属性: -webkit-appearance:none; /*去除input默认样式*/ 添加该样式,并且值为'none'时即可取消浏览器对于控件的默认样式. 另外这个属性 ...

  10. PAT 乙级 1015

    题目 题目地址:PAT 乙级 1015 题解 常规题,难点在于理清楚排序规则,通过比较简洁的方式进行编码: 在这里我选择使用vector进行存储,并使用sort方法排序,因为本题不是简单按照大小排序, ...