Homebrew:PATH env var在安装Formulas之前被修改(mercurial将使用system python而不是homebrew python)

时间:2015-02-14 04:14:37

标签: python macos path mercurial homebrew

尝试在Mac OS X 10.9上使用Homebrew来安装mercurial并确保它使用自制的python版本。

我已在/etc/paths之前更新/usr/local/bin以列出/usr/bin

使用brew install python安装了python 2.7.9,python可执行文件位于/usr/local/bin/python,这是/usr/local/Cellar/python/2.7.9/bin/python的符号链接。
当我输入which pythonpython -V时,我会收到自制的python版本。

稍后,当我运行brew install mercurial时,已安装的文件/usr/local/bin/hg shebang(#!)指向系统python /usr/bin/python
发生这种情况是因为mercurial python包安装程序(distutils)正在使用PATH变量将shebang中的python路径硬编码而不是#!/usr/bin/env python

当我检查我的PATH环境变量时,我在/usr/local/bin之前看到/usr/bin,但如果我尝试以交互方式安装brew包:brew install -i mercurial我得到一个包含不同PATH变量的shell而没有完全/usr/local/bin

如何安装mercurial以确保它将使用自制的python版本? 我更喜欢一种可以在mercurial包升级中存活的方式。

1 个答案:

答案 0 :(得分:1)

默认情况下,公式仅使用系统Python。你可以绕过Superenv(清理PATH),它应该从源代码构建时获取PATH中的任何内容:

$ brew reinstall mercurial --build-from-source --env=std
$ head -n 1 /usr/local/bin/hg  
#!/usr/local/opt/python/bin/python2.7