安装的 Python 版本太多互相干扰?pyenv 建议了解一下。
写在之前
我们都知道现在的 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空间」,期待和你的交流。
- 解决CSS垂直居中的几种方法(基于绝对定位,基于视口单位,Flexbox方法)
- Go语言学习之cgo(golang与C语言相互调用)
- golang之旅--数据类型之字符串
- Android保存图片到系统图库
- 基于Vue.js的大型报告页项目实现过程及问题总结(二)
- 使用Hexo搭建专属Blog
- Android项目中文字乱码问题
- golang中发送http请求的几种常见情况
- 注册中心 Eureka 源码解析 —— Eureka-Server 启动(一)之 ServerConfig
- lua表排序
- Go语言-base64使用
- Gitcafe绑定自定义域名
- 【死磕Java并发】—- J.U.C之并发工具类:CyclicBarrier
- Android Studio快捷键
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Java 通过RestHighLevelClient 使用ES的date_histogram 根据年月日做统计
- Debug HashMap
- NSum及股票系列
- 从0开始搭建编程框架——主框架和源码
- C++拾取——使用stl标准库生成等差、等比数列的方法
- C++拾取——使用stl标准库实现排序算法及评测
- 机器人实践课程镜像分享及使用说明(Arduino+ROS1+ROS2+Gazebo+SLAM+...)
- ROS 2 Foxy Fitzroy遇见Ubuntu 20.04
- ROS Noetic Ninjemys遇见Ubuntu 20.04
- Kustomize ConfigMapGenerate自动生成ConfigMap中的坑
- ThreadLocal的使用及原理
- 参数绑定
- ndn挖坑记(一)
- Python之QQ邮箱告警脚本
- 访问令牌JWT