如何:Macports 选择 python

Posted

技术标签:

【中文标题】如何:Macports 选择 python【英文标题】:How to: Macports select python 【发布时间】:2012-01-02 08:36:24 【问题描述】:

当我进入时:

port select --list python

这是结果:

Available versions for python:
    none
    python25 (active)
    python25-apple
    python26-apple
    python27
    python27-apple

我想当我使用 python 时,我会使用版本2.5。相反,当我输入“python”时,2.7 版似乎处于活动状态。如何将其更改为 2.5 版?

Python 2.7.1 (r271:86832, Jun 16 2011, 16:59:05) 
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

【问题讨论】:

你确定你没有使用预装的python吗? “which python”返回什么? 可能是预装的python:/usr/bin/python 【参考方案1】:

使用

osx$ port select --list python

列出可用的 Python 安装。

然后使用“--set”选项“端口选择”来设置你要使用的端口。

osx$ sudo port select --set python python27

【讨论】:

注意:从技术上讲,此答案并未回答原始问题。但是,它确实回答了将我带到此页面的问题,即如何选择哪个端口处于活动状态。【参考方案2】:

为什么会这样

MacPorts 将二进制文件安装到 /opt/local by default。

您的 Mac 上还有一个 preinstalled python。输入python启动时,会启动不受MacPorts安装影响的预装python版本。

查看输入 python 时将执行的版本

which python

要启动 mac 端口版本使用

/opt/local/bin/python2.5

解决方案

如果您希望始终使用 MacPorts 二进制文件,您可以更改路径,以便 /opt/local/bin 出现在之前 /use/local/bin 等。

/opt/local/bin 等由 MacPorts 添加到 ~/.tcshrc 中。还要确保查看 ~/.profile 和 ~/.bash_profile,因为它们是 mac 上的默认设置。

在端口中选择版本

首先输入port select --list python 列出安装的版本,然后例如sudo port select --set python python27 选择2.7。如需更多信息,请输入port help select

【讨论】:

谢谢,那行得通,但是用 macports 选择 python 的意义何在? 通常的 macports 用户将 /opt/local/bin 添加到系统目录之前的路径中,以便获取端口选择给出的 python。之后你可能会拥有它。 让 /opt/local/bin 位于 /usr/bin 之前。设置路径,例如在 .profile 或 .bash_profile 中以这种方式:PATH=/opt/local/bin:$PATH,然后重新启动 Terminal.app 或重新读取您更改的文件。在这里可以找到有关如何选择所需 python 的答案:***.com/questions/6116697/… 我不知道为什么投反对票,也许有人把csh.whynot 放在心上,和/或误解了关于使用port select 的问题?无论如何,您可以改进问题的一种方法是更多地提及如何更改其他 shell 中的路径。毕竟, (t)csh 不是 mac 上的默认设置。因此,提及.profile 和/或.bash_profile 等会改善您的答案。 AFAICT macports 在安装时自动将 /opt/local/bin 放在 /usr/local/bin 之前,因此这不太可能是真正的问题(尽管可能是 OP 的情况),该问题可能最好使用 sudo port select --set python python27 解决(有关详细信息,请参阅easyE的答案)【参考方案3】:

您的 shell 可能缓存了 python 的调用,并且不再查看 PATH。所以,当你在同一个 shell 会话中调用python 之前调用port select 时,你需要清除这个缓存。

对于 bash,使用清除缓存

hash -r

或者直接打开一个新的终端窗口。

【讨论】:

【参考方案4】:

Python 安装到:

默认(苹果):/usr/local/bin Mac 端口:/opt/local/bin python.org:/Library/Frameworks/python...

系统需要默认的python,所以最好不要把它弄得太乱。 MacPorts Python 使用方便,因为获取包非常容易。

您可以将链接设置为快捷方式:

sudo ln -s /opt/local/bin/python /usr/local/bin/ppython

然后从命令行使用 MacPorts 版本:

ppython script.py

【讨论】:

【参考方案5】:

另一种方法是对每个 Jupyter 二进制文件进行符号链接,这样版本号就不会出现:

cd /opt/local/bin
JUPYTER_VERSION=2.7
for a in jupyter*$JUPYTER_VERSION; do sudo ln -s $a $(echo $a | sed -e 's:-'$JUPYTER_VERSION':g'); done

【讨论】:

以上是关于如何:Macports 选择 python的主要内容,如果未能解决你的问题,请参考以下文章

怎么运行 macports 安装的软件

如何使用安装在 macports 中的 gcc?

如何解决 Homebrew 和 MacPorts 或 Fink 之间的冲突?

macports安装后如何启动spyder

如何让 ruby​​-svm 在 macports 的 /opt/local 中查找库?

如何使用 MacPorts 在 MacOS Lion 上设置/使用 GDB 7