安装Brew的Python后,无法指向Python

5

我正在尝试在Mac上安装Jupyter,我知道Mac已经安装了Python版本,但我也通过Brew安装了Python。

当我检查Python位置时,我得到:
which python /usr/bin/python

当我检查pip位置时,我得到:
which pip
/usr/local/bin/pip

当我尝试安装Jupyter时:
pip install install 经过长时间的安装后,它试图删除它想要升级的Python包并失败了: enter image description here 尝试卸载dateutil时出现问题。
我认为这是Mac软件包的问题。 我尝试使用sudo,但没有改变。
据我所知,这是因为文件是不可变的。
尝试使用以下命令去除不可变属性:
chflags uchg.
没有改变。

我也尝试使用虚拟环境,使用以下命令:
sudo pip install virtualenvwrapper.
但是该命令会尝试卸载另一个Python文件夹。
有什么建议吗?
谢谢。

更新:

似乎brew会创建从python2到python2的链接,同样的情况也出现在python3上。
我试着手动创建链接,虽然成功安装了我想要的软件包,但这并不是一个好的解决方案,
因为brew的全部意义就在于为我管理这些事情,下次升级python时它就会崩溃。
有什么建议吗?可能是因为brew在我的笔记本电脑上安装了两个python版本吗?


已解决:

感谢@tdube的问题,我找到了答案并在这篇帖子中找到了答案。
原来他们改变了安装python的行为。
现在你不再只有简单的python了。
你有python2和python3。
不再只有简单的pip,现在你有pip2和pip3。

这是人们使用python的默认行为的重大变化,特别是mac自带一个默认的python

所以现在你有 /usr/bin/python的python /usr/local/bin/python2的python2 /usr/local/bin/python3的python3

这是修复方法,brew的家伙建议(运行brew info python时可以看到):

==> Caveats
This formula installs a python2 executable to /usr/local/bin.
If you wish to have this formula's python executable in your PATH then add
the following to ~/.zshrc:
  export PATH="/usr/local/opt/python/libexec/bin:$PATH"

Pip and setuptools have been installed. To update them
  pip2 install --upgrade pip setuptools

You can install Python packages with
  pip2 install <package>

They will install into the site-package directory
  /usr/local/lib/python2.7/site-packages

See: http://docs.brew.sh/Homebrew-and-Python.html

您可以在此线程中阅读相关内容:


链接和线程都丢失了。 - WestCoastProjects
当你自己回答一个问题时,答案应该作为一个答案,而不是编辑到问题中。请使用“发布你的答案”或“添加答案”按钮,而不是问题上的编辑按钮。 - undefined
2个回答

0
在 Mac 上“预安装”的 Python 位于 /usr/bin/python。我认为您需要按照此处所述(python homebrew by default)更改您的 PATH 环境变量中条目的顺序。您的 PATH 设置在哪个文件中取决于您使用的 shell。

我按照他们说的做了,但是没有成功,brew将python2.<minor version>链接到python2,python3也是一样,也许问题在于它安装了两个Python? - ohad edelstain
env | egrep "^(SHELL|PATH)" 对你返回什么? - tdube
SHELL=/bin/zsh PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/Cellar/maven/3.5.0/libexec/bin - ohad edelstain
1
@ohadedelstain 你可以重新启动你的shell/终端,然后再试一次看看现在是否可以工作了吗? - tdube
@ohadedelstain 你应该能够通过在命令行中调用 python2python3 来调用它们。如果你想要通过键入 python 来调用其中一个 brew 版本的 Python(版本 2 或 3;由你选择),你可以将符号链接添加到 /usr/local/bin/ 中,使其指向 python。例如,要使 python 在命令行上指向 python2,请键入 sudo ln -s /usr/local/bin/python2 /usr/local/bin/python。(有点违反直觉,但符号链接的目标位于你正在创建的符号链接名称之前。) - tdube
显示剩余3条评论

0
原问题的原作者编辑了问题并添加了以下内容:

更新:

这个brew似乎会在python2和python3之间创建链接。
我尝试自己创建链接,成功安装了我想要的软件包。但这不是一个好的解决办法,
brew的目的就是为了帮我管理这些事情,下次升级python时就会出问题。 有什么建议吗?可能是因为brew在我的笔记本上安装了两个python版本吗?


解决方案:

找到了答案,多亏了@tdube的问题,我去查了一下brew的Python做了什么,找到了这个1月17日的帖子
结果发现他们改变了安装Python的行为。
现在不再只有简单的Python了。
现在有Python2和Python3。
不再只有简单的pip,现在有pip2和pip3。

这是人们使用Python的默认行为发生了重大变化 特别是Mac自带了默认的Python

现在你有: /usr/bin/python 是Python /usr/local/bin/python2 是Python2 /usr/local/bin/python3 是Python3

这是修复方法,brew的人建议的(在运行brew info python时可以看到):

==> Caveats
This formula installs a python2 executable to /usr/local/bin.
If you wish to have this formula's python executable in your PATH then add
the following to ~/.zshrc:
  export PATH="/usr/local/opt/python/libexec/bin:$PATH"

Pip and setuptools have been installed. To update them
  pip2 install --upgrade pip setuptools

You can install Python packages with
  pip2 install <package>

They will install into the site-package directory
  /usr/local/lib/python2.7/site-packages

See: http://docs.brew.sh/Homebrew-and-Python.html

你可以在这个帖子中阅读相关内容:

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