【问题标题】:How to tell Homebrew to install inside virtualenv?如何告诉 Homebrew 安装在 virtualenv 中?
【发布时间】:2014-09-06 14:10:42
【问题描述】:

这是我的问题。我无法通过pip 和源 (Matplotlib installation on Mavericks) 安装 MatPlotLib。我试过brew install matplotlib,安装成功结束。但是,它全局安装了 MatPlotLib,而不是当前激活的 VirtualEnv。

是否可以告诉 brew 在当前的 VirtualEnv 中安装一个包?

【问题讨论】:

    标签: python matplotlib virtualenv homebrew


    【解决方案1】:

    我帮助维护 homebrew-python 水龙头。这不被支持,也不会被支持,并且可能没有简单的方法来做到这一点。

    这是因为 Homebrew 将软件包安装到 Homebrew 的前缀,这必然是全局的。 Homebrew 不知道 virtualenvs 或如何将软件包安装到其中。改变这将违反 Homebrew 设计的核心假设,即软件包总是安装到它们的私有 Homebrew 前缀。

    对不起!

    【讨论】:

    • 您能解释一下原因吗?
    • Homebrew 将软件包安装到 Homebrew 的前缀,这必须是全局的。 Homebrew 不知道 virtualenvs 或如何将软件包安装到其中。更改这将违反 Homebrew 设计的核心假设,即软件包始终安装到其私有 Homebrew 前缀。
    【解决方案2】:

    虚拟环境所做的只是通过修改 PATH 变量来更改将调用的 Python 解释器。 Homebrew 没有考虑这一点,因为它不使用 Python 来安装包(就像 pip 那样)。正如 Tim 所说,按照设计,Homebrew 每次都安装在自己的前缀中。

    可以设想一个修改过的 Python 虚拟环境,它也安装自己的 Homebrew 副本,但这几乎完全是一件坏事。

    如果您希望在虚拟环境中使用 Homebrew 软件包,您可以做的是在 venv 中启用系统站点软件包(在 Python3 中,这将是 @987654323 @)。这也可以用来更新现有的虚拟环境。

    启用系统站点包允许 Python 使用全局安装的包,但它仍会在 venvfirst 内进行搜索,并且您可以通过使用 pip 安装某些东西来覆盖全局包。据我所知,在这种情况下,这就是你接近正确道路的方式。

    【讨论】:

    • 如何用这个更新现有的虚拟环境?
    • 我相信您可以在现有的 venv 上运行该命令,它只会覆盖相关文件,从而有效地更新它。我已经成功完成了几次,但我不记得它是否 100% 成功。
    猜你喜欢
    • 2022-11-06
    • 1970-01-01
    • 2018-01-23
    • 1970-01-01
    • 2013-08-26
    • 2012-04-26
    • 2011-04-20
    • 2016-08-30
    • 2020-06-18
    相关资源
    最近更新 更多