4

我想为我的项目构建一个 Conda 包。但是,有一个包仅在 pip 上(未上传到 Conda 频道)。使用 conda-build 命令时如何仅包含 pip 包?

我尝试使用 Conda 骨架从 PyPI URL 构建包,但它不起作用,因为 PyPI 站点上的文件是 .whl 文件,而不是像 conda 骨架教程中的 tar.gz 文件。我应该如何解决这个问题?

这是我在运行 conda 构建时遇到的错误。

conda_build.exceptions.DependencyNeedsBuildingError: Unsatisfiable dependencies for platform osx-64: {'plaidml'}

并通过使用为 plaidml 包构建骨架conda skeleton pypi plaidml-keras

Error: No source urls found for plaidml-keras

在构建 conda 包时如何包含仅 pip 包的良好做法?

4

1 回答 1

2

我在 conda-build 文档中四处查看,看起来您可以使用轮子作为依赖项来构建 conda 包。从conda-build 用户指南文档

要从 wheel 文件构建 conda 包,请在 conda 配方的 bld.bat 或 build.sh 文件中安装 .whl 文件。

您可以在 conda 配方的 meta.yaml 文件的源代码部分下载 .whl 文件。

您可以改为将 URL 直接放在 pip install 命令中。

示例:TensorFlow 的 conda 配方在 build.sh 中有一个 pip install 命令,其 URL 为 .whl 文件。meta.yaml 文件不会下载或列出 .whl 文件。

笔记

重要的是 pip 只安装一个所需的软件包。尽可能使用 conda 而不是 pip 安装依赖项。

我们强烈建议在 pip install 命令中使用 --no-deps 选项。

如果你在没有 --no-deps 选项的情况下运行 pip install,pip 通常会在你的 conda 配方中安装依赖项,这些依赖项将成为你包的一部分。这会浪费包中的空间并增加文件重叠、文件破坏和包损坏的风险。

于 2020-10-06T17:01:22.103 回答