在OS X上安装Python 2的最佳方法是什么?
我有个同事想在他的 OS X (10.6) 电脑上使用我的 Python 2 代码。我的代码用到了几个内置的 Python 包,比如 Tkinter 和 shelve,还用了第三方包,比如 numpy、scipy、matplotlib 和 ipython。
我在 OS X 自带的 Python 上遇到了一些问题(比如 IDLE 不好用)。我觉得我应该安装一个更新的 Python 版本,还有一个不同版本的 Tk。
我有几个问题:
在同一台机器上安装两个不同版本的 Python/Tk 会不会出问题?
我想把终端命令 'python'、'ipython' 和 'easy_install' 关联到更新的 Python 版本,我该怎么做?
当我用 .dmg 文件 安装像 numpy 这样的第三方包时,我怎么控制它安装到哪个版本的 Python 上?
有没有更好的方法来做这个?
如果这个过程顺利,我会考虑在我的代码文档中加入 OS X 的安装说明,所以我想把这个过程简化到最简单、最通用的方法。
*编辑:还有,这个
编辑:感谢大家提供的有用答案。我的同事试了 MacPorts,似乎效果不错,但也有一些小问题。首先,我们得从系统安装盘上安装 Xcode。这不是一个快速或轻量的安装(要好几个 GB)。幸运的是我们还有那个盘!安装完 Xcode 后,MacPorts 安装起来就简单多了。我们需要的 Python 和相关的子包也很容易安装,但他说这个安装花了几个小时。大概是因为编译的原因吧?他设置 MacPorts 的 Python 为默认也很顺利。不过,我觉得我们还得手动修改 'Python Launcher' 应用程序,因为它似乎还是默认使用系统自带的 Python。
虽然他现在有了一个能用的系统,但我还是想让他试试其他的解决方案。我不确定我代码的潜在用户是否能接受这样一个耗时几小时、占用几 GB 的安装过程。
7 个回答
你试过 ActivePython 吗?
它里面有一个包管理工具 (PyPM),默认会把东西安装到你的家目录里(比如说:~/Library/Python/2.7
)。主要的脚本会在 /usr/local/bin
里创建一个快捷方式;你可以用里面的 pythonselect
来设置你想用的 Python 版本。
你不需要去麻烦地安装 .dmg 文件,因为 PyPM 是一个 二进制 包管理工具……所以你可以安装一些不是纯 Python 的包,比如 NumPy,而不需要自己去编译。
ActivePython 可以使用苹果的 Tcl/Tk,或者如果你安装了的话,也可以用 ActiveTcl。
在你的文档中,一个 "最简单、最通用的方法" 可以是:
- 安装 ActivePython 2.7
- 打开终端,输入
pypm-2.7 install matplotlib ipython
来自 https://docs.brew.sh/Homebrew-and-Python 的说明:“Homebrew 提供了安装 Python 3.y 的方法。直到2019年底,才有 python@2 的安装方法,但由于 Python 2 已经不再支持,这个方法被移除了。”
我使用 brew
来安装我所有的库、编译器和解释器。
要安装 python
,可以试试这个:
brew install python
然后把 Python 的可执行文件目录添加到你的 $PATH
中,具体在你的 ~/.profile
文件里:
export PATH=`brew --prefix python`/bin:$PATH
我建议你安装 pip
、virtualenv
和 virtualenvwrapper
,这样可以更好地管理你的开发环境。
通过使用 MacPorts,你可以同时安装 python 2.6、2.7、3.1 和 3.2,每个版本都有自己的包,而且不会影响到系统自带的 python。
对于大多数这些 python 版本,numpy、scipy、matplotlib 和 ipython 也可以作为端口安装。
此外,如果你安装了 python_select 这个端口,你将能够:
选择哪个版本的 python(包括系统自带的 python)作为“默认”的 python;
如果某些 python 包没有作为端口提供,你可以通过 easy_install/pip 为“选定”的 python 安装这些包。
再加上 virtualenv,你就能拥有一个非常灵活的 Python 开发环境。
关于你的问题:
Q1: 使用 MacPorts,不会。虽然我不是频繁用户,但我在 2.6 和 2.7 中安装并使用过 matplotlib,并通过 python_select 在两者之间切换。
Q2: easy_install、pip 和 ipython 会“链接”到它们所安装的 python。(但请参见提示 1)
Q3: 安装 py{26,27,xx}-numpy 端口之一,或者在你选定的 python 下运行 pip install numpy
会更简单。
Q4: 嗯,MacPorts 是我知道的在 Debian/Ubuntu 上 APT 之后最好的东西... :-)
现在,如果你尝试 MacPorts,这里有两个小提示:
MacPorts 会将端口干净地安装在与 OS X 安装分开的 /opt/local 目录中,每个 python 版本会安装在
/opt/local/Library/Frameworks/Python.framework/Versions/{2.5,2.6,2.7,...}
目录下。使用 python_select 可以通过链接干净地切换“python”命令。但是...Versions/{2.5,2.6,2.7,...}/bin
目录(安装 python 脚本的地方)并没有添加到 PATH 中。只需在你的~/.profile
中添加:export PATH=/opt/local/Library/Frameworks/Python.framework/Versions/Current/bin:$PATH
,就能始终直接访问选定 python 安装的脚本。为了避免意外情况,我在我的
~/.profile
中添加了一行echo Selected python is \"$(python_select -s)\"
,这样每次打开会话时我都能知道当前选定的是哪个 python... :-)
祝好,
Georges