要解决这两个问题:编辑您的 ~/.bash_profile 文件
/usr/bin occurs before /usr/local/bin 警告:
此警告告诉您$PATH 环境变量将/usr/bin 列为比/usr/local/bin 更高的优先级,我认为这是 home brew 安装软件包的默认位置。
如果您忽略这一点,那么这意味着如果您在之前已经安装了该程序(不使用“home brew”)之后使用“home brew”安装或升级该程序到不同的位置,shell 可能会使用较旧的副本,而不是较新的“自制”安装版本。
$PATH 变量可能是 Unix Shell 环境变量中最重要的(您可以键入 env 以列出 shell 中的环境变量),因为它定义了计算机在查找时将搜索的目录顺序用于执行程序。首先指定优先级最高的路径名。
您可以通过输入 Terminal.app 查看~/.bash_profile 的内容:
$ cat ~/.bash_profile
记住:不要输入 $,它只是表示终端提示符。
它应该打印出如下内容:
# Setting PATH for EPD_free-7.3-2
# The original version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/Current/bin:${PATH}"
export PATH
请注意,Enthought 的评论表明他们将原始 ~/.bash_profile 保留在同一目录 ($HOME) 中名为 .bash_profile.pysave 的副本中。如果您想查看该文件,请使用cat 或文本编辑器查看。如果您决定恢复到它,您可以通过删除~/.bash_profile 文件并将.bash_profile.pysave 重命名为.bash_profile 来实现。 (这对我来说不是一个选项,因为我过去必须第二次安装 Enthought 的发行版(可能在其自身之上),所以我的 .bash_profile.pysave 仍然包含 Enthought 的配置,而我的 ~/.bash_profile. 列出了两个副本Enthought 配置。)
这是 Enthought 分发版,将 $PATH 环境变量设置为 ${PATH}。为了显示${PATH} 变量包含什么,让我们在shell 中输入echo $PATH。它应该表明 Enthought 自己的目录具有第一优先级(因为它们排在第一位):
$ echo $PATH
/Library/Frameworks/Python.framework/Versions/Current/bin:/Library/Frameworks/Python.framework/Versions/Current/bin:/usr/local/bin:/usr/local/sbin:~/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/texbin
如果您仔细查看上面的示例,您会发现 /usr/local/bin 在列表中出现了两次 (!),一次在第三位,一次在倒数第二位。 /usr/bin 发生在它们之间,但 brew doctor 的解析器正在检测一个问题(这可能是一个 brew doctor 错误,它只检查尾随 /usr/local/bin,但几乎可以肯定存在一个 Enthought 错误,因为他们离开了我的$PATH 定义有两个 /usr/local/bin。如果你没有看到两次 /usr/local/bin/,那可能是因为我可能已经安装了两次 Enthought。)。
所以,即使这里可能没有真正的问题,brew doctor 仍然这么认为,我们仍然需要删除 Enthought 的最高优先级目录,因为如果我们想获得不同的目录,这些条目可能会干扰未来使用“自制”的 Python 发行版。
shell 将在$PATH 变量中从左到右的顺序查找这些位置以执行命令等。
请记住,路径以冒号 (:) 分隔,并从左到右按优先级降序排列,最高优先级在前。
方法 1 -(“快速简便”版本):
A) 重新定义$PATH 变量,将此命令粘贴到终端:
$ echo 'export PATH="/usr/local/bin:/usr/local/sbin:~/bin:$PATH"' >> ~/.bash_profile
(这会将(>> 运算符)回显的字符串附加到 ~/.bash_profile 文件的末尾。如果您使用此命令,您仍然需要编辑您的 ~/.bash_profile 以稍后删除 Enthought 内容)
单击here 并向下滚动到第 3 步,了解有关此特定命令的更多信息。
或者您可以将cd 放入$HOME 目录并手动将上述命令中的字符串添加到您的.bash_profile,如下所示以删除Enthought 的配置。
B) 要禁用 Enthought Python 发行版,请编辑您的 ~/.bash_profile 文件:
切换到你的主目录:
$ cd $HOME
要在例如 TextEdit 中编辑文件:
$ open -a "TextEdit" .bash_profile
找到这两行:
PATH="/Library/Frameworks/Python.framework/Versions/Current/bin:${PATH}"
export PATH
并通过在每行前面放置# 将它们注释掉。然后保存文件。
(如果您打算不再使用 Enthought 发行版,您可以删除这些行和其他 cmets 而不是将它们注释掉)
方法 2 - 使用文本编辑器编辑文件(并解决这两个问题)
(以下说明假设不熟悉vim编辑器)
$ vim ~/.bash_profile
如果您没有写入权限,您可能无法更改~/.bash_profile 文件。如果是这样,退出 vim(ESC,然后键入 :q)并通过在上面的 vim 命令前面加上 sudo 和一个空格来更改为超级用户。您可以稍后通过在 shell 中键入 exit 退出 sudo(“超级用户执行”)。
当vim第一次打开时,你会看到命令模式,在这种模式下输入根本不会改变文件内容,而是在窗口底部的提示符下添加命令(例如:q退出,或者:w 写入(保存)更改)。
在 vim 中,您可以使用箭头键(或 H、J、K、L 键)四处移动。找到要编辑的行后,按I 键进入-INSERT- 模式并开始在光标之前插入字符(在命令模式下按A 键也将退出命令模式,但会在光标之后开始插入文本)。
如果您认为将来可能要使用 Enthought 发行版,您可以通过在每行的开头放置 # 来注释所有行,如下所示:
# Setting PATH for EPD_free-7.3-2
# The original version is saved in .bash_profile.pysave
# PATH="/Library/Frameworks/Python.framework/Versions/Current/bin:${PATH}"
# export PATH
# export PATH="/usr/local/bin:/usr/local/sbin:~/bin:$PATH"
如果您没有使用 Enthought 发行版的计划或已经将其卸载,只需从 ~/.bash_profile 文件中删除上述所有行。
要为 $PATH 环境变量声明一个新定义,请在下面添加这一行:
export PATH="/usr/local/bin:/usr/local/sbin:~/bin:$PATH"
编辑完文件后,按ESC 离开-INSERT- 模式并返回命令模式。然后输入:wq 来编写更改并退出vim 编辑器。然后您将返回到 shell。
最后,输入新保存的~/.bash_profile:
$ source .bash_profile
如果您只注释掉了 Enthought 行,您将能够返回到您的 .bash_profile 并通过取消注释这两行来再次启用 Enthought 分发。
现在运行brew doctor,您应该一切顺利。如果它在没有警告的情况下无法运行,请终止终端并重新打开它,然后重试。
运行 echo $PATH 现在应该显示:
/usr/local/bin:/usr/local/sbin:~/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/texbin