“[lib] 需要 [dep],它未安装”当 运行 对 conda-forge 原料进行 PR 测试时,尽管在 grayskull 生成的 meta.yaml 中有显式调用

"[lib] requires [dep], which is not installed" when running PR tests on conda-forge feedstock, despite explicit call in grayskull-generated meta.yaml

我正在尝试将 xagg 的 conda-forge 版本升级到最新版本 (v0.3.0)。当我将原料的 PR 设置到 conda-forge 存储库时,内置的 Azure Pipelines 测试 运行 但是失败,错误为:

import: 'xagg'
import: 'xagg'
+ pip check
xagg 0.3.0 requires pytables, which is not installed.

(完整日志为 here

奇怪的是 pytablesmeta.yaml 中明确提及(它是通过 grayskull 生成的,并在 PR 更改 here 中列出),并且,至少根据测试日志,已正确安装到测试 docker 环境中:

The following NEW packages will be INSTALLED:

[snip]

pytables:                  3.7.0-py310hf5df6ce_0             conda-forge

[snip]

DEBUG:urllib3.connectionpool:https://conda.anaconda.org:443 "GET /conda-forge/linux-64/pytables-3.7.0-py310hf5df6ce_0.tar.bz2 HTTP/1.1" 200 4914957

[snip]

Preparing transaction: ...working... done
Verifying transaction: ...working... done
Executing transaction: ...working... done

有人对如何解决此问题有任何建议吗?到目前为止,我所看到的 suggestions 是明确列出 meta.yaml 中的依赖关系。

我认为这可能是与 this question 类似的问题,不过是可选包,而不是内置包。

感谢任何帮助!

康达食谱看起来不错。正如 pip check.

失败所表明的,实际上是上游包被破坏了

即,pip check 确保 setup.py 中列为依赖项的软件包全部安装。但是,v3.0.0 版本列出了一个 pytables 包,它不是有效的 PyPI 包。相反,这应该只是 tables.

也许,这种混淆的产生是因为在 Conda 生态系统中 Python 包 tables 的名称为 pytables。这只是拥有通用包管理器的问题的一部分——跨语言生态系统的包存在名称空间冲突,因此使用前缀或其他一些修饰符重命名(例如,所有 CRAN 包都有 r- 前缀)。因此,在 Conda 配方中,一个指示 Conda 包名称 (pytables),但 pip check 将验证这实际上使 tables 模块可用。