4

我正在我的 Mac 上安装 Homebrew 以安装 Macvim。安装 Homebrew 后,系统会提示我运行 brew doctor,这又会生成许多警告。我已经解决了其中的几个,但被困在两个:

警告:在你的 PATH 中找到了 Python。这可能会导致构建问题,因为该软件会将其自己的 iconv 和 libxml2 副本安装到其他构建系统拾取的目录中。

我不确定我是否应该简单地忽略这一点,或者寻找一种方法来卸载 Enthought Python。

警告:/usr/bin 出现在 /usr/local/bin 之前 这意味着将使用系统提供的程序而不是 Homebrew 提供的程序。两条路径都存在以下工具:

git
git-cvsserver
git-receive-pack
git-shell
git-upload-archive
git-upload-pack

考虑设置您的 PATH,以便 /usr/local/bin 出现在 /usr/bin 之前。这是一个单行: echo export PATH="/usr/local/bin:$PATH" >> ~/.bash_profile

我跑了

echo export PATH="/usr/local/bin:$PATH" >> ~/.bash_profile

几次,但继续收到相同的警告。这是我的路径

nngrey$ echo $PATH
/Users/nngrey/.rvm/gems/ruby-2.0.0-p247@railstutorial_rails_4_0/bin:/Users/nngrey/.rvm/gems/ruby-2.0.0-p247@global/bin:/Users/nngrey/.rvm/rubies/ruby-2.0.0-p247/bin:/Users/nngrey/.rvm/bin:/Library/Frameworks/Python.framework/Versions/Current/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/Users/nngrey/bin

好的,我在这里找到了第二个问题的答案:How to modify PATH for Homebrew?

我只需要重新启动终端。不过,仍然不确定如何处理 Python。

任何建议,将不胜感激。谢谢

4

2 回答 2

5

要解决这两个问题:编辑~/.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 中的环境变量),因为它定义了计算机在查找要执行的程序时搜索的目录顺序。首先指定最高优先级的路径名。

您可以~/.bash_profile通过输入 Terminal.app 查看您的内容:

$ 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调用的副本中。如果您希望可以查看该文件,请使用文本编辑器或文本编辑器进行检查。如果您决定恢复到它,您可以通过删除文件并重命名为. (这对我来说不是一个选项,因为我过去必须第二次安装 Enthought 的发行版(可能在其自身之上),所以我仍然包含 Enthought 的配置,并且我列出了 Enthought 配置的两个副本。).bash_profile.pysave$HOMEcat~/.bash_profile.bash_profile.pysave.bash_profile.bash_profile.pysave~/.bash_profile.

这是 Enthought 分布将$PATHenv 变量设置为${PATH}. 为了显示${PATH}变量包含的内容,让我们进入echo $PATHshell。它应该表明 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 发行版,这些条目可能会干扰使用'家酿'。

$PATHshell 将从左到右的顺序查看变量中的这些位置以执行命令等。记住,路径由冒号 ( :) 分隔,并按从左到右的降序优先级列出,最高优先级在前。

方法 1 -(“快速简便”版本):

A)重新定义$PATH变量,将此命令粘贴到终端中:

$ echo 'export PATH="/usr/local/bin:/usr/local/sbin:~/bin:$PATH"' >> ~/.bash_profile

(这会将(>>操作员)回显的字符串附加到~/.bash_profile文件的末尾。如果您使用此命令,您仍然需要编辑您的 ~/.bash_profile 以稍后删除 Enthought 内容)

单击此处并向下滚动到第 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 发行版,您可以删除这些行和其他注释,而不是将它们注释掉)

方法 2 - 使用文本编辑器编辑文件(并解决这两个问题)

(以下解释假设不熟悉 vim 编辑器)

$ vim ~/.bash_profile

如果您没有写入权限,您可能无法更改~/.bash_profile文件。如果是这样,退出 vim ( ESC,然后键入:q) 并通过在上述 vim 命令前面加上sudo一个空格来更改为超级用户。您可以稍后通过在 shell 中键入一次来退出sudo(“超级用户执行”) 。exit

当 vim 首次打开时,您会看到命令模式,其中键入根本不会更改文件内容,而是在窗口底部的提示符中添加命令(例如:q退出,或:w写入(保存)更改)。

H在 vim 中,您可以使用箭头键(或, 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
于 2013-09-30T23:38:42.800 回答
1

除非你需要它,否则我会删除 Enthought 的 Python 版本。

于 2013-09-30T20:47:13.000 回答