如何: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的主要内容,如果未能解决你的问题,请参考以下文章
如何解决 Homebrew 和 MacPorts 或 Fink 之间的冲突?