首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cairo依赖Python

cairo依赖Python
EN

Stack Overflow用户
提问于 2022-08-14 09:42:00
回答 1查看 65关注 0票数 0

卸载python@3.9包时,Homebrew抱怨cairo包依赖于它。这不太可能是真的:

代码语言:javascript
复制
brew uses python@3.9

列出几个包,但没有列出cairo,

代码语言:javascript
复制
brew deps --tree cairo

显示一棵没有任何python@.*的树。另一方面,

代码语言:javascript
复制
brew uses --installed python@3.9

列出cairo包,并且像brew missingbrew doctor这样的命令会创建一个关于缺少的依赖项python@3.9的警告。

我不知道cairo包(见其公式这里)在某种程度上是否依赖python3.9,但我想它不是,而且行为很奇怪。怎么回事?怎么才能修好?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-15 12:49:58

我想我已经找到了是什么导致了问题,它是由评论在Homebrew的Github存储库中的一个老问题上激发出来的:

brew uses --installed使用您安装的公式中的依赖项解析信息,而仅brew uses不使用。

实际上,虽然/opt/homebrew/Cellar/cairo/1.16.0_5/INSTALL_RECEIPT.json不包含python@3.9的依赖项,但已安装的包是这样的:在我的系统中,文件公式有一个键runtime_dependencies,其中包含这个元素:

代码语言:javascript
复制
{
   "full_name": "python@3.9",
   "version": "3.9.9",
   "declared_directly": false
}

进一步的评论中,开发人员解释:

当从源构建时,有些东西会机会主义地获取依赖,即它们与事物链接,而不是我们试图让它们这样做。另一件事是,如果你已经用一个特定的,非默认的选项构建了一个公式。现在,我们将这些链接存储在公式本身中,并将其用于某些命令,这样您就可以得到对您的系统正确的结果(也就是说,brew uses --installed不会错过如果卸载就会中断的结果)。

这可能不是一个完整的解释(我很肯定我安装了一个二进制的“瓶子”,没有任何非标准选项),但它确实暗示了问题可能出现的一般领域。

接下来要了解的是如何解决问题。我不知道是否有正式的解决办法,但选择似乎是

  1. 手动从INSTALL_RECEIPT.json中删除该部分
  2. 卸载cairo包,同时抑制警告并删除依赖包,然后重新安装它。

我选择了1.看来(到目前为止)起作用了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73350588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档