如何让Homebrew在虚拟环境中安装?
我遇到了一个问题。我无法通过 pip
或者从源代码安装 MatPlotLib(可以参考这个链接:在 Mavericks 上安装 Matplotlib)。我尝试了 brew install matplotlib
,安装过程顺利完成。但是,它把 MatPlotLib 安装到了全局环境,而不是我当前激活的虚拟环境(VirtualEnv)里。
请问有没有办法让 brew 在当前的虚拟环境里安装一个软件包呢?
2 个回答
虚拟环境的作用就是改变Python解释器的调用方式,具体是通过修改PATH
这个变量来实现的。Homebrew并不关注这个,因为它在安装软件包时并不使用Python(而是像pip
那样)。正如Tim所说,Homebrew每次都会在它自己的目录下安装。
我们可以想象一种修改过的Python虚拟环境,它也会安装自己的一份Homebrew,但这样做几乎完全是个坏主意。
如果你想在虚拟环境中使用Homebrew的软件包,可以选择在虚拟环境中启用系统站点包(在Python3中,可以使用python3 -m venv --system-site-packages ~/path/to/venv
)。这也可以用来更新已有的虚拟环境。
启用系统站点包后,Python就可以使用全局安装的软件包,但它仍然会优先在虚拟环境中查找,另外你也可以通过使用pip
来覆盖全局软件包。根据我的理解,这在这种情况下是最接近“正确方式”的做法。
我帮忙维护homebrew-python这个工具。这个工具不会被支持,而且可能没有简单的方法来解决这个问题。
原因是Homebrew会把软件包安装到它自己的目录下,这个目录是全局的。Homebrew并不知道虚拟环境(virtualenv)是什么,也不知道怎么把软件包安装到这些虚拟环境里。如果要改变这一点,就会违反Homebrew设计的一个基本原则,也就是软件包总是安装到它们自己的Homebrew目录里。
抱歉!