在终端设置路径

时间:2013-09-30 20:08:51

标签: python path homebrew enthought

我在Mac上安装Homebrew以安装Macvim。安装Homebrew后,我被提示运行brew doctor,这会产生一些警告。我已经解决了其中的几个问题,但我坚持了两个:

警告:在你的PATH中找到了Enthought 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。

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

2 个答案:

答案 0 :(得分:5)

要解决这两个问题:编辑~/.bash_profile文件

/usr/bin occurs before /usr/local/bin警告:

此警告告诉您$PATH环境变量列出/usr/bin的优先级高于/usr/local/bin,我认为这是home brew安装软件包的默认位置。

如果您忽略这一点,那么这意味着如果您使用' home brew'安装或升级程序在已经安装了之前安装的程序(不使用' home brew')到不同位置之后,shell可能会使用较旧的副本调用命令,而不是使用较新的家用brew版本安装版本。

$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保留在同一目录(.bash_profile.pysave)中名为$HOME的副本中。如果需要,您可以查看该文件,请使用cat或文本编辑器进行检查。如果您决定还原为它,则可以删除~/.bash_profile文件并将.bash_profile.pysave重命名为.bash_profile来执行此操作。 (这对我来说不是一个选择,因为我过去必须第二次安装Enthought的发行版(可能在它自己之上),所以我的.bash_profile.pysave仍然包含了Enthought'配置,我的~/.bash_profile.列出了Enthought配置的两个副本。)

这是将$PATH env变量设置为${PATH}的Enthought分布。要显示${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目录,因为这些条目可能会干扰我们希望将来使用' home brew'来获得不同的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发行版,可以删除这些行和其他注释,而不是将其注释掉)

方法2 - 使用文本编辑器

编辑文件(并解决两个问题)

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

$ vim ~/.bash_profile

如果您没有写权限,可能会阻止您更改~/.bash_profile文件。如果是,请退出vim(ESC,然后键入:q)并通过在上面添加sudo的vim命令和空格来更改为超级用户。您可以稍后在shell中输入sudo退出exit('超级用户')。

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

在vim中,您可以使用箭头键(或HJKL键)移动。找到要编辑的行后,按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

答案 1 :(得分:1)

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