【问题标题】:Homebrew not linking python correctly?Homebrew没有正确链接python?
【发布时间】:2017-08-30 05:56:41
【问题描述】:

我使用自制软件安装了 python 2.7.13 和 python 3.6.2,并更新了我的 ~/.bash_profile:

# Homebrew
export PATH=/usr/local/bin:$PATH

Python3 链接良好。但是,“哪个蟒蛇”仍然会给我

/usr/bin/python

而“哪个python2”产生

/usr/local/bin/python2

看起来 Homebrew 将 python 2 安装为“python2”并且从未将“python”链接到新安装。这在安装 virtualenvwrapper 等时给我带来了很多麻烦。

顺便说一句,我也做过 brew link python.

有人知道这是为什么以及如何解决吗?

非常感谢!!

【问题讨论】:

  • 顺便说一句,“pip”在我的终端上不起作用,而“pip2”可以。不知道为什么,但它一定是这个问题的一部分。
  • 似乎这是正确的行为。更改默认值肯定会破坏任何使用 Python 的系统工具。这到底给你带来了什么问题?
  • 您好丹尼尔,感谢您的回复。当我尝试按照在线指南中的说明将“source /usr/local/bin/virtualenvwrapper.sh”添加到我的 .bash_profile 中时,它给了我一些错误,基本上是说 /usr/bin 的 python,这是系统默认的 python ,没有安装 virtualenvwrapper。这表明它仍在查看系统 python,而不是 brew 版本。

标签: python macos homebrew


【解决方案1】:

他们改变了这种行为here

今天我想宣布 Homebrew 1.3.0。最显着的变化 因为 1.2.0 是 brew install python 不再安装 python 无需手动添加 PATH 的二进制文件,而是安装 python2 二进制。这样可以避免默认覆盖系统 python 二进制文件 将 Python 作为依赖项安装时。也为实现这一目标铺平了道路 最终让 python 成为 Python 3.x。

您必须将 python 符号链接到您想要的 homebrew 安装的 python 版本。

你可以这样做:

$ln -s /usr/local/bin/python2 /usr/local/bin/python

python 符号链接到自制 Python2.x 安装或执行以下操作:

$ln -s /usr/local/bin/python3 /usr/local/bin/python

将其链接到 Python 3.x hombrew 安装。

【讨论】:

  • gsi-frank,谢谢,我想这可以解释。但是我如何将python“符号链接”到新版本?
  • @Ning 我编辑了我的答案,测试它是否适合你。
【解决方案2】:

gsi-frank 的解决方案很好地解决了这个问题,但是使用他的解决方案后,您的 pip3 可能会遇到问题。您的 pip3 可能链接到旧实例,因此无法用于新的 python 实例。

键入 which pip3 以查看 pip3 的路径。 如果您的路径链接到您的新实例,则忽略此答案的其余部分。

键入 echo $PATH 以查看您当前的路径。如果它包含您的旧 python 实例的路径,那么您需要将其从您的 .bash_profile 中删除

要解决这个问题:检查您的 .bash_profile 并查看是否有指向旧 python 实例的路径。 如果旧路径在那里,您可以将其删除。

我遇到了这个问题,如果需要,这里是问题的链接: How to change pip3 path after installing python with homebrew?

找到你的.bash_profile

  • 转到您的 Finder
  • 右键单击并单击Go to a folder... 并输入~
  • CMD + shift + . 查看隐藏文件
  • 右键单击您的.bash_profile 并在文本编辑器中打开

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-06
    • 2016-12-29
    • 1970-01-01
    • 2023-03-30
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    相关资源
    最近更新 更多