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
azev
V2EX  ›  Python

被 Mac 上的 Python 爆击

  •  
  •   azev · 2020-06-24 10:02:34 +08:00 · 8586 次点击
    这是一个创建于 1618 天前的主题,其中的信息可能已经有所发展或是发生改变。

    系统内置了一个 python2
    安装 xcode 的时候内置了 Command Line Tools 其中有 python3.7
    后来安装 brew 要求必须再单独安装个 Command Line Tools 其中又包含了 python3.7
    通过 brew 安装了一个软件 依赖并安装了 python3.8

    想问问 这些 python 是都创建软连接了?会不会有冲突?

    28 条回复    2020-06-25 22:14:55 +08:00
    Livid
        1
    Livid  
    MOD
       2020-06-24 10:04:18 +08:00   ❤️ 2
    每一个所在的目录都不一样,当你在命令行敲了 python 之后,调用谁取决于你的 PATH 设置。

    如果想彻底控制这件事情,推荐 pyenv:

    https://www.v2ex.com/t/420216
    NoobPhper
        2
    NoobPhper  
       2020-06-24 10:11:11 +08:00
    brew link --force
    volvo007
        3
    volvo007  
       2020-06-24 11:41:46 +08:00
    建议别这么干…… 装个 pip 或者 conda,用相关的功能 (比如 conda create -n <pyEnvName> python=3.8 )来管理和隔离不同的 py 环境
    VDimos
        4
    VDimos  
       2020-06-24 11:46:16 +08:00 via Android
    别动默认的 python,用 miniconda 管理 python
    justin2018
        5
    justin2018  
       2020-06-24 11:46:28 +08:00
    用 conda 或者 Google Colab
    Mutoo
        6
    Mutoo  
       2020-06-24 11:47:07 +08:00
    之前研究过这个问题,macos 系统里其实有两个 python 2

    /System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 
    /Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7

        /System 目录为 root 管理员专用路径,该 pythong 用于系统维护之类的场景,平时不用。
        /Library 目录为所有用户共享,但仅有管理员能修改(安装、删除)其中的内容,需要 sudo 权限才能安装 package

    此外不同工具自带的 python 主要是考虑到自己的依赖。

    你需要的解决方案是虚环境 venv/pyenv
    ttimasdf
        7
    ttimasdf  
       2020-06-24 12:00:42 +08:00 via Android
    日常使用 pyenv 可定制性比较高,
    podel
        8
    podel  
       2020-06-24 12:15:21 +08:00
    除了 venv/pyenv
    另外还推荐一个 miniconda
    sh 直接安装 安装好了 直接用。想切什么版本 切什么版本。
    Xusually
        9
    Xusually  
       2020-06-24 12:22:54 +08:00
    macOS 的日常,自带的这些自己别动。
    python 用 conda 之类的管理
    brew 安的其他软件在 brew 自己的目录里,link 不 link 最也可以控制的
    系统自动启动的服务和你的冲突的话,把系统的关掉,用你自己的
    说到底,还是环境的事儿,看看环境变量就知道
    laike9m
        10
    laike9m  
       2020-06-24 13:23:11 +08:00
    直接 pyenv 一把梭即可
    LennieChoi
        11
    LennieChoi  
       2020-06-24 13:56:02 +08:00
    conda 简直太香,同样 mac,当时看一文章教怎么改系统的 python,差点误入歧途
    BBCCBB
        12
    BBCCBB  
       2020-06-24 14:11:54 +08:00
    我本来 vim 用的好好的, 后来出现了你说的这种多个 python 环境, 编译 vim 后一直报错.. 我就换 neovim 了.. 蛋疼.
    bytesfold
        13
    bytesfold  
       2020-06-24 14:45:24 +08:00
    conda
    nightwitch
        14
    nightwitch  
       2020-06-24 15:17:28 +08:00
    这个也不算是 macos 上的问题洛,在 Windows,Linux 上装不同版本的 Python 环境也会碰到一样的问题。
    conda/pyenv 解决问题
    itskingname
        15
    itskingname  
       2020-06-24 15:48:10 +08:00
    我写了一篇公众号特别来说明这个问题: https://mp.weixin.qq.com/s/nOUXxAClAZf2Zb4aS3ADww
    Nick66
        16
    Nick66  
       2020-06-24 16:17:43 +08:00
    我也遇到这个问题
    TOUJOURSER
        17
    TOUJOURSER  
       2020-06-24 16:18:44 +08:00
    感觉还是 pyenv 比较自在
    gam2046
        18
    gam2046  
       2020-06-24 16:49:37 +08:00
    这个和系统关系不大了,python 自己的锅,放弃了向下兼容。这一点,不管怎么喷 Java,向下兼容做的是没得黑。
    keepeye
        19
    keepeye  
       2020-06-24 17:11:50 +08:00
    依赖中自带的 python 你又用不到,不影响。
    自己 python 环境通过 pyenv + virtualenv 管理吧
    cdlnls
        20
    cdlnls  
       2020-06-24 18:34:30 +08:00 via Android
    主要看环境变量 PATH,可以把 brew 的环境变量目录提前,让 brew 下的 python 排在默认的前面,这样在执行的时候就不会指向默认的 python 。
    同理,你可以通过修改管理变量来控制运行指定版本的 python 。
    Kobayashi
        21
    Kobayashi  
       2020-06-24 19:07:28 +08:00 via Android
    这算哪门子暴击,我还以为你强迫症犯了把系统 Python 卸载了。
    seakingii
        22
    seakingii  
       2020-06-24 20:52:46 +08:00
    python 。。真是乱。。光是环境管理就好几套。。
    indev
        23
    indev  
       2020-06-25 00:37:51 +08:00
    我也用的 miniconda
    liangch
        24
    liangch  
       2020-06-25 08:09:18 +08:00
    说好几套的,谁让你同时用了。自己多学习。
    lululau
        25
    lululau  
       2020-06-25 10:04:52 +08:00 via iPhone
    arischow
        26
    arischow  
       2020-06-25 10:18:12 +08:00 via iPhone
    网上乱七八糟的文章很多,想拿来就用的人也不少,对于不熟悉的人是比较困难的。楼主可以综合上面所说的研究一下。
    jiejiss
        27
    jiejiss  
       2020-06-25 11:45:04 +08:00
    $ where python
    /Users/me/anaconda3/bin/python
    /usr/local/bin/python
    /usr/bin/python

    首先你 $PATH 里可能就有多个。不在 $PATH 里的可能更多。每次 where 然后手动指定全路径还不如整 conda 或者 venv
    linvaux
        28
    linvaux  
       2020-06-25 22:14:55 +08:00
    conda 解君愁
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1377 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:43 · PVG 07:43 · LAX 15:43 · JFK 18:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.