1. 前言

Mac系统自带python2.7,本文目的是将自带的python升级到3.6版本。
网上有本多的做法是让python2.7和python3.X两个版本共存,博主并不知道,是两版本共存好,还是直接升级好,所以读者要慎重选择方法。

2. 关闭Rootless机制

由于Mac下的python2.7 默认是安装在/System目录下的。但是~~~Mac有个Rootless机制,默认不允许直接在/System下作修改。所以要先关闭Rootless机制。

关闭Rootless机制的方法:
关闭:
1).重启电脑, 重启过程中按住command+R, 进入恢复模式
2).打开terminal,键入: csrutil disable
3).重启电脑

如果之后要再开启Rootless机制,方法如下:
开启:
1).重启电脑, 重启过程中按住command+R, 进入恢复模式
2).打开terminal,键入: csrutil enable
3).重启电脑

3. 下载安装python3.6

从官网https://www.python.org/downloads/
下载pkg版本,并安装。安装选默认路径,会安装到/Library/Frameworks/Python.framework/Versions/目录下

4. 删除python2.7

sudo rm -R /System/Library/Frameworks/Python.framework/Versions/2.7
  • 1

5. 移动python3.6

将python3.6安装到/System/Library/Frameworks/Python.framework/Versions/目录下:

sudo mv /Library/Frameworks/Python.framework/Versions/3.6 /System/Library/Frameworks/Python.framework/Versions
  • 1

6. 修改文件所属的Group

设置Group为wheel,原来系统自带的就是这样的。

sudo chown -R root:wheel /System/Library/Frameworks/Python.framework/Versions/3.6
  • 1

7. 更新一下Current的Link

在Versions的目录里有一个Current的link,是指向当前的Python版本,原始是指向系统自带的Python2.7,我们把它删除后,link就失效了,所以需要重新链一下

sudo rm /System/Library/Frameworks/Python.framework/Versions/Current
sudo ln -s /System/Library/Frameworks/Python.framework/Versions/3.6 /System/Library/Frameworks/Python.framework/Versions/Current
  • 1
  • 2

8. 重新链接可执行文件

1) 先把系统原来的执行文件删掉

sudo rm /usr/bin/pydoc
sudo rm /usr/bin/python
sudo rm /usr/bin/pythonw
sudo rm /usr/bin/python-config
  • 1
  • 2
  • 3
  • 4

2) 建立新的链接

sudo ln -s /System/Library/Frameworks/Python.framework/Versions/3.6/bin/pydoc3.6 /usr/bin/pydoc
sudo ln -s /System/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6 /usr/bin/python
sudo ln -s /System/Library/Frameworks/Python.framework/Versions/3.6/bin/pythonw3.6 /usr/bin/pythonw
sudo ln -s /System/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6m-config /usr/bin/python-config
  • 1
  • 2
  • 3
  • 4

9. 更新.bash_profile文件

默认的bash_profile里python的bin是指向/Library/Frameworks/Python.framework/Versions/3.6/bin的。要改到/System/目录下

vim ~/.bash_profile (只要能编辑就行)
插入新的Python路径

# Setting PATH for Python 3.6

# The orginal version is saved in .bash_profile.pysave
PATH="/System/Library/Frameworks/Python.framework/Versions/3.6/bin:${PATH}"
export PATH
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

我默认是没有.bash_profile这个文件的,直接自己创建喽。

10. 卸载pkg安装的python3.6

这一步不做,在使用pip3命令时还是要出错的(它默认连接到/Library/目录下照pip3命令,但是实际上应该到/System/Library/目录下找)。博主掉这个坑好久。

我用的是CleanApp这个软件来卸载原来pkg安装的python3.6,安装进来的两个软件都卸载。

11. 测试

在命令行中,用pip -V和pip3 -V查看版本和位置。用python进入。

Mac下升级python2.7到python3.6,升级成功。


参考:
http://www.jianshu.com/p/94a69ef2f2ef
http://jingyan.baidu.com/article/14bd256e39b63dbb6d261289.html

【转】Mac下升级python2.7到python3.6的更多相关文章

  1. mac下将python2.7改为python3

    mac下将python2.7改为python3 查看当前电脑python版本 python -V 修改.bash_profile文件 vi ~/.bash_profile //编辑bash_profi ...

  2. CentOS6.x 安装升级Python2.7.x Python3.4.x

    CentOS6.x 安装升级Python2.7.x Python3.4.x 2015-06-07• CentOS.Linux • 评论关闭 CentOS release 6.6 (Final) 安装升 ...

  3. mac下 将python2.7改为python3

    1.查看当前电脑python版本 python -V // 显示2.7.x 2.用brew升级python brew update python 3.如果安装成功,去系统目录下回看到两个版本的pyth ...

  4. Mac下安装python2和python3共存

    一般是python2默认安装了,python3没有安装,这时候一般使用命令:brew install python3 进行安装 这里有个基础知识要记录一下,就是不同方法安装python的路径是不一样的 ...

  5. Linux-Centos7系统下安装python2并与python3版本共存

    问题描述: 最近有个需求是想在centos下安装python3.5 因为django这边用到是这个版本 1.查看系统版本和python版本 Centos7.6版本默认安装的是python2.7.5版本 ...

  6. Centos/Linux 下升级python2.7至3.5.0

    (一) 安装Python3.5 (1)在安装python之前,因为linux系统下默认没有安装wget,gcc,首先安装wget,gcc: [root@node6 python_scripts]# y ...

  7. Mac 升级 Python2.7 到 Python3.5

    1.去 Python 官网下载一个版本的包 https://www.python.org/downloads/mac-osx/ 2.安装之后,去  /Library/Frameworks/Python ...

  8. 升级python2.7至python3.7

    最近在centos7下执行命令时,出现以下提示: DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020 ...

  9. [linux]centos7.4上升级python2版本到python3.6.5 【安装双版本,默认python3】

    版本声明 centos7.4 前言:linux上的python默认是版本2的,之前学django项目用的是3的版本 所以得升级下版本~ 1.下载python3.6.5 cd /usr/local/ w ...

随机推荐

  1. UNIX域套接字编程和socketpair 函数

    一.UNIX Domain Socket IPC socket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIX Domain Socket.虽然网络soc ...

  2. server2012 配置SSL证书

    导入SSL证书: 开始 -〉运行 -〉MMC,启动控制台程序 -> 选择菜单“文件 -〉添加/删除管理单元”->列表中选择“证书”->点击“添加”-> 选择“计算机帐户” -& ...

  3. centos7 SSH链接不上

    我试了下面的方法不行--(并且也排查了 ssh是正确安装的) [一]关闭selinuxvi /etc/selinux/config 然后reboot重启!!!! [二]关闭防火墙并禁止启动,有能力自己 ...

  4. mysqld_safe与mysqld区别详解

    mysqld_safe与mysqld区别,直接运行mysqld程序来启动MySQL服务的方法很少见,mysqld_safe脚本会在启动MySQL服务器后继续监控其运行情况,并在其死机时重新启动它. 用 ...

  5. AngularJS 使用 UI Router 实现表单向导

    Today we will be using AngularJS and the great UI Router and the Angular ngAnimate module to create ...

  6. 如何用adb抓取log?

    在Androidclient的測试过程中,有时候我们会遇到闪退等异常情况. 这时我们能够通过adb抓取log.从而给开发提供很多其它信息. 一.下载ADB.exe     在网上搜索"adb ...

  7. DMA&PIO

    DMA&PIO   DMA的英文拼写是“Direct Memory Access”,汉语的意思就是直接内存访问,是一种不经过CPU而直接从内存存取数据的数据交换模式.在DMA模式下,CPU只须 ...

  8. 黑马day16 jquery案例演示

    案例一: <html> <head> <meta http-equiv="Content-Type" content="text/html; ...

  9. 向Oracle数据库插入一条数据

    这几天搞了一下Oracle数据库.可能用sql server习惯了,感觉好不方便.PL的界面友好度比sql server差远了 .既然都收购了PL了 为什么不给它做好一点呢?各种不便.郁闷 向Orac ...

  10. ajax 兼容性问题解决 集锦

    这两天刚解决了ajax多浏览器兼容的问题,主要就针对Firefox的,开始还以为Firefox不支持ajax呢(别笑我呀,不怎么了解Firefox也没用过,呵呵),多亏看了下面的文章才让我了解ajax ...