自制:在安装Formulae之前修改了PATH env var(mercurial将使用系统python而不是自制pyt



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

我已经更新了/etc/paths以在/usr/bin之前列出/usr/local/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 而不是 #!/usr/bin/env python 中硬编码 python 的路径。

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

如何安装 mercurial 以确保它将使用自制版本的 python?我更喜欢一种可以在反复无常的软件包升级中幸存下来的方法。

默认情况下,该公式仅使用系统 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

最新更新