切换Python发行版

1 投票
3 回答
702 浏览
提问于 2025-04-16 00:32

我有一台装了Snow Leopard系统的MacBook Pro,里面自带的是Python 2.6版本。不过,Numpy在上面运行得不太好。用loadtxt的时候总是报文件名太长的错误,而getfromtxt根本无法使用(显示模块里没有这个对象的错误)。于是我尝试在MacPorts上下载py26-numpy这个版本。可当我用python的时候,它还是默认使用Mac自带的版本。我该怎么切换到MacPorts上最新的版本呢?这看起来比从头开始编译我需要的所有工具简单多了……

谢谢!

3 个回答

0

现有的回答很有用,但我注意到没有人明确说明如何让这个更改生效。如果你对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中。

1

你需要更新你的 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 值的前面

4

首先,你需要把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这个位置,所以如果你想用这个解释器,你需要做以下三件事中的一件:

  1. python2.6来启动解释器(不能只用python)。
  2. 设置一个别名,让python指向python2.6(也就是输入alias python=python2.6)。
  3. 手动创建一个符号链接,从/opt/local/bin/python指向/opt/local/bin/python2.6
  4. 使用python_select来设置调用python时使用的Python版本。

选项3或4可能是最好的选择。

撰写回答