切换Python发行版
我有一台装了Snow Leopard系统的MacBook Pro,里面自带的是Python 2.6版本。不过,Numpy在上面运行得不太好。用loadtxt的时候总是报文件名太长的错误,而getfromtxt根本无法使用(显示模块里没有这个对象的错误)。于是我尝试在MacPorts上下载py26-numpy这个版本。可当我用python的时候,它还是默认使用Mac自带的版本。我该怎么切换到MacPorts上最新的版本呢?这看起来比从头开始编译我需要的所有工具简单多了……
谢谢!
3 个回答
现有的回答很有用,但我注意到没有人明确说明如何让这个更改生效。如果你对Unix命令行不太熟悉,这可能很重要。
首先,简单解释一下:在基于Unix的操作系统中,重要的配置信息会存储在叫做环境变量的东西里。名为PATH的环境变量告诉你的命令行去哪里找程序。当你输入一个命令时,它会从PATH变量的最左边开始,查看那个文件夹里是否有你想运行的程序。如果找到了,就运行它;如果没找到,就去下一个文件夹。当你安装了多个同样的程序时,可以通过PATH变量来指定优先使用哪个版本。
要利用这个功能,你需要把新版本程序所在的文件夹放在PATH的最前面,像这样:
PATH=/opt/local/bin:/usr/bin:/usr/local/bin
如果你只想在当前的命令行中做这个更改,可以输入:
export PATH=/opt/local/bin:/usr/bin:/usr/local/bin
但如果你希望每次打开命令行时都能生效,就需要告诉命令行在每次启动时设置这个变量。有一个文件叫做.bashrc
,还有一个叫.bash_profile
,bash在启动时会读取这两个文件。.bashrc
文件通常用来存放所有命令行的指令,而.bash_profile
则是存放交互式命令行的指令。所以,要让这个更改生效,你可以编辑/Users/yourname/.bashrc
,加入一行像这样的内容:
export PATH="/opt/local/bin:$PATH"
这样做的效果是把/opt/local/bin
添加到PATH变量的最前面,同时保持其他部分不变。如果这个更改似乎没有生效,你需要确保.bashrc
文件被调用,可以在.bash_profile
脚本中添加source $HOME/.bashrc
,或者直接把需要的那一行移动到.bash_profile
中。
你需要更新你的 PATH
,这样 MacPorts 的内容就会排在系统标准目录的前面。比如,你可以使用这个命令:export PATH=/opt/local/bin:/opt/local/sbin:/opt/local/Library/Frameworks/Python.framework/Versions/Current/bin/:$PATH
。
更新一下:特别注意 /opt/local/Library/Frameworks/Python.framework/Versions/Current/bin
是在你旧的 PATH
值的前面。
首先,你需要把MacPorts的路径(/opt/local/bin
)添加到你的$PATH
中。在.bashrc
文件(或者你使用的其他shell配置文件)里加上:
export PATH="/opt/local/bin:${PATH}"
如果你通过MacPorts安装了多个版本的Python,或者想方便地在MacPorts版本和苹果自带版本之间切换,你可以安装一个叫做python_select的工具。
另外要注意,MacPorts版本的Python 2.6安装在/opt/local/bin/python2.6
这个位置,所以如果你想用这个解释器,你需要做以下三件事中的一件:
- 用
python2.6
来启动解释器(不能只用python
)。 - 设置一个别名,让
python
指向python2.6
(也就是输入alias python=python2.6
)。 - 手动创建一个符号链接,从
/opt/local/bin/python
指向/opt/local/bin/python2.6
。 - 使用
python_select
来设置调用python
时使用的Python版本。
选项3或4可能是最好的选择。