在Mac上,Homebrew将Python链接到/usr/local/bin/。

4
我想问如何通过Homebrew在Mac上安装Python。 Homebrew是Mac的软件包管理器。
具体来说,我想将Python连接到/usr/local/bin/而不是默认连接到/usr/bin/
这样做的原因是我想安装一个虚拟环境,它会为我提供Python库(请参见:https://www.learnopencv.com/install-opencv3-on-macos/)。否则,无法安装虚拟环境,因为bash_profile中的source /usr/local/bin/virtualenvwrapper.sh无法读取。
您有任何想法吗?
简而言之,我希望终端的which python输出为/usr/local/bin/python,而不是默认的/usr/bin/python
更新: 我按照TomD下面描述的更改进行了更改(我希望是正确的!),但现在which python没有输出:不是像我想要的那样/usr/local/bin/python(甚至不是/usr/bin/python)。 那么,为什么最终来自'cellar'的Python未链接到/usr/local/bin/python

更改目录有具体原因吗?例如,您是否希望覆盖系统版本的Python? - TomD
感谢您的关注。我修改了我的正文以回应这个问题。您有什么想法吗? - user8801127
默认情况下,Python的homebrew安装应该已经将二进制文件放置在/usr/local/bin中。 - wkl
嗯...我对此并不确定。当我输入'which python'时,答案是/usr/bin/python,这就是我的问题所在。它应该是/usr/local/bin/python,这样我才能安装我的虚拟环境等。 - user8801127
这更像是 PATH 环境变量问题,/usr/bin/usr/local/bin 更先出现。如果路径正确,ls /usr/local/bin/python 是否会返回任何内容? - wkl
它返回“ls:/usr/local/bin/python:没有这样的文件或目录”,因为确切的Python在/usr/bin中(如果我没记错的话)。但是我想要它(或创建符号链接)到/usr/local/bin/。你有任何想法如何做到这一点吗? - user8801127
1个回答

6

首先简单介绍一下基本概念。Homebrew将所有内容安装在“cellar”中,这就是“kegs”(软件包)所在的地方。

然后,Homebrew会创建符号链接到它们的文件,指向 /usr/local/。

例如,Python被安装在 /usr/local/Cellar/python 中。

因此,在安装后,建议删除 /usr/bin 的符号链接,并创建一个指向 /usr/local/bin 的符号链接。

删除符号链接:

unlink /usr/bin/python

创建符号链接:

ln -s /usr/local/Cellar/python /usr/bin/python

请确保您的$PATH正确,/usr/local/bin在usr/bin之前。

谢谢您的回答,但从某种意义上说这是我的主要问题:“如何删除到 /usr/bin 的符号链接并制作一个到 /usr/local/bin 的符号链接?”我希望得到更详细的答案。 - user8801127
1
是的,/usr/local/bin在usr/bin之前,我在“bash_profile”中键入“export PATH=/usr/local/bin:$PATH”(如链接所述),因此我认为所有这些都没问题。那么请问“如何删除到/usr/bin的符号链接并创建到/usr/local/bin的符号链接”? - user8801127
1
所以在第一种情况下,我会得到响应“unlink: /usr/bin/python: Operation not permitted”,而在第二种情况下,我会得到响应“ln: /usr/bin/python: Operation not permitted”。为什么会这样? - user8801127
尝试使用sudo创建符号链接。看起来你遇到了权限问题。另外,如果你需要更改$PATH,请确保在更改后打开一个新的终端。 - TomD
请确保您想要使用的链接目录位于目录列表的第一位,您的环境变量$PATH。 - TomD
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接