被 Mac 上的 Python 爆击

2020-06-24 10:02:34 +08:00
 azev

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

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

8437 次点击
所在节点    Python
28 条回复
Livid
2020-06-24 10:04:18 +08:00
每一个所在的目录都不一样,当你在命令行敲了 python 之后,调用谁取决于你的 PATH 设置。

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

https://www.v2ex.com/t/420216
NoobPhper
2020-06-24 10:11:11 +08:00
brew link --force
volvo007
2020-06-24 11:41:46 +08:00
建议别这么干…… 装个 pip 或者 conda,用相关的功能 (比如 conda create -n <pyEnvName> python=3.8 )来管理和隔离不同的 py 环境
VDimos
2020-06-24 11:46:16 +08:00
别动默认的 python,用 miniconda 管理 python
justin2018
2020-06-24 11:46:28 +08:00
用 conda 或者 Google Colab
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
2020-06-24 12:00:42 +08:00
日常使用 pyenv 可定制性比较高,
podel
2020-06-24 12:15:21 +08:00
除了 venv/pyenv
另外还推荐一个 miniconda
sh 直接安装 安装好了 直接用。想切什么版本 切什么版本。
Xusually
2020-06-24 12:22:54 +08:00
macOS 的日常,自带的这些自己别动。
python 用 conda 之类的管理
brew 安的其他软件在 brew 自己的目录里,link 不 link 最也可以控制的
系统自动启动的服务和你的冲突的话,把系统的关掉,用你自己的
说到底,还是环境的事儿,看看环境变量就知道
laike9m
2020-06-24 13:23:11 +08:00
直接 pyenv 一把梭即可
LennieChoi
2020-06-24 13:56:02 +08:00
conda 简直太香,同样 mac,当时看一文章教怎么改系统的 python,差点误入歧途
BBCCBB
2020-06-24 14:11:54 +08:00
我本来 vim 用的好好的, 后来出现了你说的这种多个 python 环境, 编译 vim 后一直报错.. 我就换 neovim 了.. 蛋疼.
bytesfold
2020-06-24 14:45:24 +08:00
conda
nightwitch
2020-06-24 15:17:28 +08:00
这个也不算是 macos 上的问题洛,在 Windows,Linux 上装不同版本的 Python 环境也会碰到一样的问题。
conda/pyenv 解决问题
itskingname
2020-06-24 15:48:10 +08:00
我写了一篇公众号特别来说明这个问题: https://mp.weixin.qq.com/s/nOUXxAClAZf2Zb4aS3ADww
Nick66
2020-06-24 16:17:43 +08:00
我也遇到这个问题
TOUJOURSER
2020-06-24 16:18:44 +08:00
感觉还是 pyenv 比较自在
gam2046
2020-06-24 16:49:37 +08:00
这个和系统关系不大了,python 自己的锅,放弃了向下兼容。这一点,不管怎么喷 Java,向下兼容做的是没得黑。
keepeye
2020-06-24 17:11:50 +08:00
依赖中自带的 python 你又用不到,不影响。
自己 python 环境通过 pyenv + virtualenv 管理吧
cdlnls
2020-06-24 18:34:30 +08:00
主要看环境变量 PATH,可以把 brew 的环境变量目录提前,让 brew 下的 python 排在默认的前面,这样在执行的时候就不会指向默认的 python 。
同理,你可以通过修改管理变量来控制运行指定版本的 python 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/684341

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX