使用mac osx的朋友知道,mac osx系统自带python。那么,我们开发过程中是否应该使用系统自带的Python?有什么样的利和弊,如何规避利弊?本文将带你一探究竟。
系统自带python窥探
打开终端,输入以下命令:
$ which python
应该看到终端输出以下内容
/usr/bin/python
打印/usr/bin中的文件:
ls -1 /usr/bin
可以看到以下文件:
pydoc
pydoc2.6
pydoc2.7
python
python-config
python2.6
python2.6-config
python2.7
python2.7-config
pythonw
pythonw2.6
pythonw2.7
python并不是真正的python程序,执行命令行程序python实际执行的是一个真正的系统默认的python程序,例如python2.7。可以使用以下命令查看系统默认的python程序版本:
$python --version
可以看到终端输出以下信息:
2.7.10
那么,如果想改变系统默认的python程序版本,比如从2.7.10改成2.6.9,该怎么做呢?根据StackExchange上这个问题,mac os下正确的做法有2种:
方法1
`$defaults write com.apple.versioner.python Version 2.6
`
方法2
~/.bash_profile添加下面一行:
export VERSIONER_PYTHON_VERSION=2.6
这2种方法都来自于苹果官方说明文档,查看文档方法为:
$ man python
不过网上很多文章建议不要随便更改系统默认python版本,可能引发无法预知的错误。
事实上,/usr/bin/python2.7是一个符号链接文件(有关符号链接可以参考我的另一篇文章Homebrew安装Packages是否需要另外设置环境变量PATH?符号链接部分),使用以下命令查看它链接到哪里:
ls -l /usr/bin/python2.7
终端输出如下:
lrwxr-xr-x 1 root wheel 75 3 22 18:33 /usr/bin/python2.7 -> ../../System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7
可以看到/usr/bin/python2.7符号链接文件最终指向的是../../System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7
使用系统自带Python的弊端
-
系统自带的python版本比较旧,得不到python开发社区的支持,系统版本python无法及时更新,
-
使用系统自带python的pip安装的package可能会在升级mac os系统的时候消失,需要重装。package升级时也可能遭遇各种问题,参见这个issue
使用Homebrew安装最新的Python
为什么要使用Homebrew安装Python?
-
总能下载到最新版本的python
-
Homebrew版的python包含了最新的pip和setuptools工具
安装步骤
首先需要安装苹果公司提供的免费IDE工具Xcode,或者不安装Xcode,只安装Xcode的命令行工具:
$ xcode-select --install
其次需要安装Homebrew,安装方法参见官网http://brew.sh/
接着执行
$ brew update
通常在新安装package的时候都会更新brew
最后,使用brew安装python
$ brew install python
默认会安装python2.x版本,截止到本文写作时安装的是2.7.11版本,可以使用如下命令查看homebrew版python相关信息:
$ which python
终端输出
/usr/local/bin/python
这是因为Homebrew会把package安装到/usr/local/Cellar下,同时在/usr/local/bin建立符号链接指向/usr/local/Cellar下真正的package里的bin。
用以下指令查看版本信息
python --version
终端输出
2.7.11
如果需要安装3.x版本python,请使用
$ brew install python3
网友评论