在macOS上通过pyenv安装和切换多版本Python
1. 安装homebrew
官网 http://brew.sh/index_zh-cn.html
打开终端,在终端中粘贴如下脚本
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
测试是否安装成功
在终端中输入
brew -v
出现类似提示,即代表安装成功
Homebrew 0.9.5 (git revision 1021; last commit 2016-03-30)
2.安装pyenv
在终端中输入
brew install pyenv
验证是否安装成功
pyenv -v
出现类似结果,即代表安装成功
pyenv 20150310
3.查看可安装的Python版本
在终端中输入
pyenv install --list
会列出可安装的Python版本号
4.安装特定版本的Python
在终端中输入
pyenv install <version>
安装对应的Python版本,如:
pyenv install 2.7.
5.异常处理
如出现如下异常:
Installing Python-2.7....
ERROR: The Python zlib extension was not compiled. Missing the zlib? Please consult to the Wiki page to fix the problem.
https://github.com/yyuu/pyenv/wiki/Common-build-problems BUILD FAILED (OS X 10.11. using python-build ) Inspect or clean up the working tree at /var/folders/fb/7406jr3s60z_tdpxxqm2s9hh0000gn/T/python-build.20160616162746.48644
Results logged to /var/folders/fb/7406jr3s60z_tdpxxqm2s9hh0000gn/T/python-build.20160616162746.48644.log Last log lines:
rm -f /Users/Matrix/.pyenv/versions/2.7./share/man/man1/python.
(cd /Users/Matrix/.pyenv/versions/2.7./share/man/man1; ln -s python2. python.)
if test "xno" != "xno" ; then \
case no in \
upgrade) ensurepip="--upgrade" ;; \
install|*) ensurepip="" ;; \
esac; \
./python.exe -E -m ensurepip \
$ensurepip --root=/ ; \
fi
yujingyao:2.7. Matrix$ CFLAGS="-I$(brew --prefix openssl)/include" LDFLAGS="-L$(brew --prefix openssl)/lib" pyenv install 3.6-Dev
Cloning https://hg.python.org/cpython...
error: please install `mercurial` and try again
则在终端中输入,注意替换如下代码的版本号
CFLAGS="-I$(brew --prefix openssl)/include -I$(xcrun --show-sdk-path)/usr/include" \
LDFLAGS="-L$(brew --prefix openssl)/lib" \
pyenv install -v 2.7.11
在EI Capitan实测有效
资料来源:https://github.com/yyuu/pyenv/issues/448
如有其他异常可以参考 https://github.com/yyuu/pyenv/wiki/Common-build-problems
如果出现如下异常:
ImportError: No module named 'pyexpat'
请更新pyenv版本:brew upgrade pyenv
实测从1.0.2_1 更新直 1.2.3 后问题解决,同时安装python时,也不再需要上面的命令,可以直接通过pyenv install <version> 直接安装
6.查看pyenv已安装的Python版本
pyenv versions
在终端中会列出已安装的Python版本,如
2.7.11
3.5.1
7.编辑.bash_profile文件
在终端中输入如下命令,进入当前用户的Home目录
cd ~
输入如下命令,打开.bash_profile文件
open .bash_profile
如不存在,则输入如下命令,创建文件
touch .bash_profile
编辑文件
open -e .bash_profile
在弹出的.bash_profile文件中新增
if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi
command + s 保存文件
在终端中输入如下命令,使用更新之后的.bash_profile内容
source .bash_profile
8.指定目录切换指定版本的Python
在终端中cd到特定目录,路径名称自行修改
cd /Users/Matrix/Documents/Projects/Python/3.5.
输入:
pyenv local <version>
如
pyenv local 3.5.
9.设定全局的Python版本
在终端中输入
pyenv global <version>
如
pyenv global 3.5.
不建议如此操作,可能会导致部分系统程序无法正常工作
10.检查是否切换成功
在终端中cd到特定目录,路径名称自行修改
cd /Users/Matrix/Documents/Projects/Python/3.5.1
在终端中输入:
python
会列出当前目录使用的python版本,和设置的版本一样则代表切换成功
在Pycharm中选择pyenv安装的Python版本参考:
http://www.cnblogs.com/blackmatrix/p/5603888.html
在macOS上通过pyenv安装和切换多版本Python的更多相关文章
- 解决在Mac上用pyenv安装python3失败的问题
背景 前段时间在本地Mac系统上要跑一个python3写的压测脚本. Mac默认安装的是python2, 而且很多软件依赖的也是python2. 为了不影响现有系统其它软件, 当时安装了pyenv来实 ...
- 安装nvm 切换nodejs版本
删除已安装的nodejs--------------------------------------------------------------- #查看已经安装在全局的模块,以便删除这些全局模块 ...
- OneinStack 安装 LNMP 切换PHP版本
如果你的环境不是OneinStack安装的 ,可以略过这条博客了 注意:以下所有命令若提示权限不足 请在命令前加 sudo *** ①,首先查看当前已安装的PHP版本,我这里安装了好几个版本,你们可 ...
- 通过pyenv和virtualenv创建多版本Python虚拟环境
虚拟环境使用第三方工具virtualenv创建,首先输入以下命令检查系统是否已经安装virtualenv. $ virtualenv --version 如果显示virtualenv版本号,则说明已经 ...
- MacOS上Parallels Desktop安装MacOSHighSierra
下载dmg文件 http://www.macoshome.com/macos/977.html 配置宿主机时间2015-10-27 23:25 为了防止"macOS未能安装在您的电脑上_安装 ...
- linux ubuntu下如何安装并且切换java版本(Unsupported major.minor version 52.0)
最近在做一个dcos(数据中心操作系统)的东西,需要用marathon来做进程管理.遗憾的是0.6版本的marathon在API方面很是缺少,换成了0.15版本之后,运行时提示“Unsupported ...
- Pycharm选择pyenv安装的Python版本
在macOS上使用pyenv实现Python多版本共存后,pyenv安装的Python版本存在于macOS下的 ~/.pyenv/versions/下. 在Pycharm时,选择此目录下对应的版本即可 ...
- 使用rvm安装与切换Ruby
列出已知的 Ruby 版本 rvm list known安装一个 Ruby 版本 rvm install 2.3.1 --disable-binary这里安装了最新的 2.2.0, rvm list ...
- CentOS7上Python3.5安装
CentOS7上Python3.5安装 1.下载 https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz 2.上传到服务器 3. yum in ...
随机推荐
- java 之 迭代器模式(大话设计模式)
众所周知,java是编程语言中的高级语言,在java的世界里,已经有前辈为我们封装好了各个很好用的框架,工具类等,今天笔者想说的迭代器模式也已经被封装过. 就是我们经常使用的for循环迭代器.或者It ...
- js内置构造函数属性修改问题
在学习js原型时遇到一个问题,Array,Object等内置构造函数部分属性无法修改,我猜测可能是因为浏览器实现的原因造成的. 1.修改name属性无效. <script type=" ...
- 二叉树的递归遍历 The Falling Leaves UVa 699
题意:对于每一棵树,每一个结点都有它的水平位置,左子结点在根节点的水平位置-1,右子节点在根节点的位置+1,从左至右输出每个水平位置的节点之和 解题思路:由于上题所示的遍历方式如同二叉树的前序遍历,与 ...
- Object-Relational Structural Patterns
Single Table Inheritance Represents an inheritance hierarchy of classes as a single table that has c ...
- Cocos2d-x3.0 触摸事件
TouchableSpriteTest auto winSize = Director::getInstance()->getWinSize(); Point origin = Director ...
- xml基本语法(2)
本节要点: 了解XML的文档声明 了解XML的元素.命名规则.属性.元素内容.处理指令等概念 1 XML文档声明 表示该文档是一个XML文档,以及遵循哪个XML版本的规范. 规范:<?xml 版 ...
- 【 全干货 】5 分钟带你看懂 Docker !
欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者丨唐文广:腾讯工程师,负责无线研发部地图测试. 导语:Docker,近两年才流行起来的超轻量级虚拟机,它可以让你轻松完成持续集成.自动交付 ...
- inline-block并列排序时候的影响
当两个设置了inline-block属性的元素并列排放时,它们的位置能够互相影响. 元素结构: <div class="container"> <div clas ...
- 十四、Spring Boot 日志记录 SLF4J
在开发中打印内容,使用 System.out.println() 和 Log4j 应当是人人皆知的方法了. 其实在开发中我们不建议使用 System.out 因为大量的使用 System.out 会增 ...
- 不可思议的混合模式 background-blend-mode
本文接前文:不可思议的混合模式 mix-blend-mode .由于 mix-blend-mode 这个属性的强大,很多应用场景和动效的制作不断完善和被发掘出来,遂另起一文继续介绍一些使用 mix-b ...