V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
xiuc001
V2EX  ›  Python

MAC OS X EI Capitan 系统 安装 python3

  •  1
     
  •   xiuc001 · 2015-11-27 15:51:28 +08:00 · 8195 次点击
    这是一个创建于 3289 天前的主题,其中的信息可能已经有所发展或是发生改变。

    MAC OS X EI Capitan 系统的 python 从 2.7 升级到 3 ,如果是 IOS 开发者请不要直接把 2.7 干掉,因为 xcode 只支持 2.7 的 python ,下面是安装的过程。
    ======================== 第一篇(替换 python27 )===========================

    1. 先去 python 的官网下载最新的 python ,默认路径安装好。
      由于 MAC 的 SIP 安全特性,即使使用 sudo 也无法使获得最高权限,无法对 MAC 系统级的目录进行更改,所以需要先把 SIP 特性关闭掉,在操作

      • 重启 MAC ,按住 Command+R
      • 打开 terminal ,输入 csrutil disable 命令关闭 SIP 安全特性
      • 重启 MAC
    2. 现在要删除 mac 自带的 python ,如下:

    sudo rm -R /System/Library/Frameworks/Python.framework/Versions/2.7
    把第一步里安装好的 Python 目录移到原本系统所持有的目录位置。
    sudo mv /Library/Frameworks/Python.framework/Versions/3.5 /System/Library/Frameworks/Python.framework/Versions

    1. 第三步,修改文件所属的 Group 设置 Group 为 wheel ,原来系统自带的就是这样的
      sudo chown -R root:wheel /System/Library/Frameworks/Python.framework/Versions/3.5

    2. 第四步,更新一下 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.5 /System/Library/Frameworks/Python.framework/Versions/Current

    1. 第五步,重新链接可执行文件

    1) 先把系统原来的执行文件删掉
    sudo rm /usr/bin/pydocsudo rm /usr/bin/pythonsudo rm /usr/bin/pythonwsudo rm /usr/bin/python-config
    2) 建立新的链接 sudo ln -s /System/Library/Frameworks/Python.framework/Versions/3.5/bin/pydoc3.5 /usr/bin/pydoc
    sudo ln -s /System/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /usr/bin/python
    sudo ln -s /System/Library/Frameworks/Python.framework/Versions/3.5/bin/pythonw3.5 /usr/bin/pythonw
    sudo ln -s /System/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5m-config /usr/bin/python-config

    1. 最后,更新一下.bash_profile 文件在终端输入 vi ~/.bash_profile

    按一下 i 进入编辑状态
    #Setting PATH for Python 3.5
    #The orginal version is saved in .bash_profile.py save
    PATH=”/System/Library/Frameworks/Python.framework/Versions/3.5/bin:${PATH}”
    export PATH
    再按一下 “ esc ” 键 ,结束编辑并输入 “: wq ” 存储离开

    1. 打开命令行,输入 python ,如下:

    Python 3.5.1 (v3.5.1:c0e311e010fc, May 18 2014, 00:54:21)
    [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
    Type “ help ”, “ copyright ”, “ credits ” or “ license ” for more information.

    ================= 第二篇(不替换系统的 python2.7 版本)=======================

    1. 先去 python 的官网下载最新的 python ,默认路径安装好。

    由于 MAC 的 SIP 安全特性,即使使用 sudo 也无法使获得最高权限,无法对 MAC 系统级的目录进行更改,所以需要先把 SIP 特性关闭掉,在操作

    • 重启 MAC ,按住 Command+R
    • 打开 terminal ,输入 csrutil disable 命令关闭 SIP 安全特性
    • 重启 MAC
    1. 把第一步里安装好的 Python 目录移到原本系统所持有的目录位置。

    sudo mv /Library/Frameworks/Python.framework/Versions/3.5 /System/Library/Frameworks/Python.framework/Versions

    1. 第三步,修改文件所属的 Group 设置 Group 为 wheel ,原来系统自带的就是这样的

    sudo chown -R root:wheel /System/Library/Frameworks/Python.framework/Versions/3.5

    1. 第四步,重新链接可执行文件

    1) 建立新的链接
    sudo ln -s /System/Library/Frameworks/Python.framework/Versions/3.5/bin/pydoc3.5 /usr/bin/pydoc3
    sudo ln -s /System/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /usr/bin/python3
    sudo ln -s /System/Library/Frameworks/Python.framework/Versions/3.5/bin/pythonw3.5 /usr/bin/pythonw3
    sudo ln -s /System/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5m-config /usr/bin/python3-config

    1. 打开命令行,输入 python3 ,如下:

    Python 3.5.1 (v3.5.1:c0e311e010fc, May 18 2014, 00:54:21)
    [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
    Type “ help ”, “ copyright ”, “ credits ” or “ license ” for more information.

    28 条回复    2016-11-11 21:52:53 +08:00
    pi1ot
        1
    pi1ot  
       2015-11-27 15:54:38 +08:00
    brew install python3 不就可以了嘛
    h4lt
        2
    h4lt  
       2015-11-27 16:00:18 +08:00
    brew install pyenv

    移除系统自带的感觉略作死
    likuku
        3
    likuku  
       2015-11-27 16:01:19 +08:00
    python 官网下载装完就可以了,为啥要干掉旧的 python 2 ?

    $ uname -v
    Darwin Kernel Version 15.0.0: Sat Sep 19 15:53:46 PDT 2015; root:xnu-3247.10.11~1/RELEASE_X86_64
    [16:02:24] ~ ⮀ $ ⮀
    $ python3
    Python 3.5.0 (v3.5.0:374f501f4567, Sep 12 2015, 11:00:19)
    [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>>
    xiuc001
        4
    xiuc001  
    OP
       2015-11-27 16:02:00 +08:00
    @pi1ot 之前试过,貌似没成功,然后就用其他方式搞了
    jasonworg
        5
    jasonworg  
       2015-11-27 16:23:50 +08:00
    关 SIP 略作死。
    软链接可以放在 /usr/local/bin/。
    xiuc001
        6
    xiuc001  
    OP
       2015-11-27 16:25:46 +08:00
    @jasonworg 可以重新开启- -
    superalsrk
        7
    superalsrk  
       2015-11-27 17:27:40 +08:00
    。。。直接装全局真的很崩溃,然后被逼无奈用 PyENV ,毫无压力
    pynix
        8
    pynix  
       2015-11-27 19:01:14 +08:00 via Android
    brew
    Changxu
        9
    Changxu  
       2015-11-27 19:03:07 +08:00
    对啊、我们都是用 brew Install python3 的,不知道楼主在讲什么
    anthonyeef
        10
    anthonyeef  
       2015-11-27 19:07:32 +08:00 via Android
    楼上都太坏了…楼主也是提供了一种思路而已。

    (虽然我也是用 homebrew 装的 XDD
    mimzy
        11
    mimzy  
       2015-11-27 19:08:25 +08:00 via Android
    El Capitan
    Tink
        12
    Tink  
       2015-11-27 19:10:23 +08:00
    千万别懂系统自带的啊
    Tink
        13
    Tink  
       2015-11-27 19:10:32 +08:00
    懂——动
    Sylv
        14
    Sylv  
       2015-11-27 21:42:59 +08:00 via iPhone
    替换系统 Python 就是花样作死,以前没 SIP 也就算了,现在摆明了别让你动还这么折腾。迟早会后悔的,然后又会开始折腾想怎么才能恢复原本的 Python 。为什么我会这么说,因为我曾经年少无知也干过这事,折腾到最后还是重装了系统才舒坦。
    系统 Python 就留着别动,用 homebrew 可以再装独立的 Python 2 和 Python 3 到 /usr/local/bin/ 中,只要 brew install python3 简单的一个命令就好了。然后只要 PATH 里 /usr/local/bin/ 在 /usr/bin/ 前面,那么在终端里输 python 和 python3 ,用的就会是 homebrew 独立的版本。如果对 Python 版本有更多的需求,则可以用 pyenv ,同样也是 brew install pyenv 一个命令就好了。
    xfwduke
        15
    xfwduke  
       2015-11-27 23:06:52 +08:00
    替换系统 Python 绝对后悔

    安装到自定义位置, 用 virtualenv 才是正道
    bkmi
        16
    bkmi  
       2015-11-28 00:13:49 +08:00
    楼上几个都说动系统的崩溃 作死 会后悔,却没一个说出原因的,这是为毛
    xhat
        17
    xhat  
       2015-11-28 00:17:29 +08:00
    楼主所说有用。
    替换系统 python 了,正作死中
    xhat
        18
    xhat  
       2015-11-28 00:18:54 +08:00
    在考虑如果把 os 用 tm 备份下来,重装后再恢复,应该就能恢复原来 python 了吧,有人这么干过么
    Reflectiontime
        19
    Reflectiontime  
       2015-11-28 00:40:48 +08:00
    花样作死。。。
    brew install python3
    不需要的时候再 uninstall 一下就行了
    完全不用动系统原来的。
    matthewz
        20
    matthewz  
       2015-11-28 00:49:01 +08:00
    pyenv
    limbo0
        21
    limbo0  
       2015-11-28 01:18:31 +08:00
    为 lz 鼓掌, 不过还是用虚拟环境吧
    janxin
        22
    janxin  
       2015-11-28 13:53:22 +08:00 via iPhone
    brew install pyenv
    pyenv install 3.5.0
    pyenv shell 3.5.0
    carlhan
        23
    carlhan  
       2015-11-28 15:57:40 +08:00
    没有 MAC ,不了解。

    但是我的理解,要想保留 python2 , python3 完全可以通过源码安装, configure 的时候指定 prefix ,然后做一个 symlink 或者 bash/zsh 里面设置一下 alias 就 OK 了啊。

    当然,还是要说,我没有 MAC ,情况可能不一样。
    MrEggNoodle
        24
    MrEggNoodle  
       2015-11-28 20:23:33 +08:00
    @bkmi 因为三言两语说不清楚。。。
    dorentus
        25
    dorentus  
       2015-11-29 00:27:52 +08:00 via iPhone
    @bkmi 不管是 Linux 还是 OS X ,系统自带的 python 都不光是给用户用,还是会被其他系统组件使用的,某些第三方应用也会假定系统提供某个版本的 python 并使用它。所有这些,它们的正常运行都建立在系统 python 提供的兼容性上。

    更不用说 py3 和 py2 并不兼容这个会带来多大的问题了。
    rim99
        26
    rim99  
       2015-11-29 20:14:05 +08:00 via iPhone
    记得以前看到过 Xcode 还依赖 python2.7 呢
    SvenWong
        27
    SvenWong  
       2016-03-17 16:12:25 +08:00
    @rim99 真后悔我没早看这个文章,已经作死了
    guoguofish
        28
    guoguofish  
       2016-11-11 21:52:53 +08:00
    有些独立的 app 是不管你怎么设置环境的,它都要使用系统自带 python 的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3537 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 04:27 · PVG 12:27 · LAX 20:27 · JFK 23:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.