OS X El Capitan 如何升级自带 Python ?

2015-10-07 16:13:29 +08:00
 crs0910
官方下载了 3.5 的安装包。
安装完
sudo -H ln -s /Library/Frameworks/Python.framework/Versions/3.5 /usr/bin/python
提示 ln: /usr/bin/python: Operation not permitted

搜了一下网上,删除替换的方法也是 Operation not permitted 。

请问应该怎么搞?
2367 次点击
所在节点    问与答
21 条回复
SErHo
2015-10-07 16:19:02 +08:00
替换自带的是作大死啊,请用 brew 或者 pyenv 安装。
zander
2015-10-07 16:25:11 +08:00
看 man python ,里边介绍了 osx 下自带的切换 python 版本的功能。
节选
CHANGING THE DEFAULT PYTHON
Using

% defaults write com.apple.versioner.python Version 2.6

will make version 2.6 the user default when running both the python and
pythonw commands (versioner is the internal name of the version-selection
software used).

但是,如 1 楼所说我觉得还是用 homebrew 的吧。
yyfearth
2015-10-07 16:26:45 +08:00
干嘛去管自带的那堆
直接 Homebrew 不就好了
svn git zsh py ruby 都是 brew 的 加上系统不带的 nodejs
有时候一个版本不够就上 pyenv rvm nvm
系统自带的放那就可以了

另外 10.11 有 SIP 除非你手动关掉
否则系统的文件 只有苹果可以改 sudo 都没用
crs0910
2015-10-07 16:35:48 +08:00
@SErHo 我用 brewcask 只能安装 3.4 ,并且安装了之后,怎么在 shell 里面用 3.4 呢?
SErHo
2015-10-07 16:45:57 +08:00
@crs0910 为啥不直接用 brew install python3 安装?用 brewcask 的话,你得把 XXXX/python3.4/bin 加到 PATH 里面。
n6DD1A640
2015-10-07 16:46:28 +08:00
El Capitan 有 SIP ,/System 里面的东西 sudo 都动不了。

$> brew cask info python3
python3: 3.5.0
Python
https://www.python.org/
Not installed
https://github.com/caskroom/homebrew-cask/blob/master/Casks/python3.rb
==> Contents
python-3.5.0-macosx10.6.pkg (pkg)

$> brew info python3
python3: stable 3.5.0 (bottled), HEAD
Interpreted, interactive, object-oriented programming language
https://www.python.org/
/usr/local/Cellar/python3/3.5.0 (3475 files, 60M) *
Poured from bottle
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/python3.rb

Homebrew 已经是 3.5 了,你需要 Update 一下,然后 brew link python3
zander
2015-10-07 16:53:57 +08:00
@crs0910 brew switch <formula> <version>
eg. brew switch mysql 5.5.29
crs0910
2015-10-07 17:03:42 +08:00
@SErHo brew 安装也不行 首先安装过程提示 Error: Permission denied - /usr/local/Frameworks
安装后提示 brew install python3
Warning: python3-3.4.3_2 already installed, it's just not linked
Warning: You are using OS X 10.11.
We do not provide support for this pre-release version.
You may encounter build failures or other breakage.
crs0910
2015-10-07 17:05:02 +08:00
@crs0910 link 也报错
brew link --overwrite --dry-run python3
Would remove:
/usr/local/bin/pydoc3 -> /Library/Frameworks/Python.framework/Versions/3.5/bin/pydoc3
/usr/local/bin/python3 -> /Library/Frameworks/Python.framework/Versions/3.5/bin/python3
/usr/local/bin/python3-config -> /Library/Frameworks/Python.framework/Versions/3.5/bin/python3-config
/usr/local/bin/pyvenv -> /Library/Frameworks/Python.framework/Versions/3.5/bin/pyvenv
Error: Permission denied - /usr/local/Frameworks
zander
2015-10-07 17:06:51 +08:00
你这是 /usr/local 的权限出错了啊....你 brew update 的时候就没看到错误提示么。
"We do not provide support for this pre-release version. " 这句话 10.11 刚出来就没了。
simon7
2015-10-07 17:27:27 +08:00
brew update && brew upgrade
crs0910
2015-10-07 17:34:56 +08:00
@yyfearth 谢谢,我决定关掉了。不然连 cask 都用不了
zander
2015-10-07 17:37:40 +08:00
@crs0910 不用关啊....我都回复了你这么多了是权限出错了
用 chown 修复权限。
crs0910
2015-10-07 17:39:16 +08:00
@zander 我已经 sudo chown -R `whoami` /usr/local 了 brew update 不了
zhangwei1996
2015-10-07 17:45:20 +08:00
@SErHo 为什么不能替换自带的啊?我`使用`自带的 PHP 和 apache ,没关系吧?
zander
2015-10-07 17:46:26 +08:00
crs0910
2015-10-07 17:49:11 +08:00
@zander 谢谢 我再捣鼓一下。
Bardon
2015-10-07 18:45:38 +08:00
将新的路径加入到 /etc/paths 文件的最上面
SErHo
2015-10-07 19:01:59 +08:00
@zhangwei1996 可能有些自带的或者第三方软件会用到默认的,如果直接将 Python2 换成 Python3 ,可能就会出问题,当然,这个是以前用 Ubuntu 时遇到的问题,不知道 Mac 上会不会出现,所以现在自己使用不会替换系统自带的。 PHP 和 apache 直接使用应该没啥问题。
Sylv
2015-10-08 01:10:32 +08:00
用 Python 3 替换系统自带的 Python 2 真是作死,楼主应该还不知道 Python 2 和 Python 3 是不兼容的吧?并不是版本号越高越好,你这样替换后原本各种依赖系统 Python 2 的东西很有可能就运行不了了,你到时候又要问怎么恢复系统自带 Python 了。

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

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

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

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

© 2021 V2EX