python - 使用 conda 安装附加功能

标签 python anaconda conda

在编写 setup.py 时,我可以指定 extras_require 并给出我的工具的附加功能所需的依赖项列表,如下所示:

setup(
    name = "mypackage",
    install_requires = ["numpy"],
    extras_require = {
        "plotting": ["matplotlib"],
    }
)

我将我的包上传到 PyPI 和一个 conda channel 并尝试安装它,包括所有附加功能。我可以使用 PyPI 安装附加功能:

$ pip install mypackage[plotting]

但是,当我从 conda 安装我的包时,我无法安装 extras。 conda 有类似的选项吗?

最佳答案

您可以通过为可选依赖项创建一个元数据包来做到这一点。一个很好的例子是 matploptlib-feedstock .这里有包含所有代码的主包 matplotlib-base 和依赖于 matplotlib-base 及其可选 Qt 依赖项的元包 matplotlib

考虑到 matplotlib 示例,您可以在配方中获得以下输出:

package:
  name: some_pkg

…usual recipe contents…

outputs:
  - name: some_pkg

  - name: some_pkg_with_optional_dep
    requirements:
      host:
        - python
      run:
        - python
        - optional_dependency
        - {{ pin_subpackage('some_pkg', exact=True) }}
    test:
      imports:
        - some_pkg

请注意,当您需要特定版本的可选依赖项时,您可以在可选包中指定它,但只有当您安装了 some_pkg_with_optional_dep 时才会应用版本限制。

要使可选依赖项的版本约束独立于 some_pkg_with_optional_dep 的存在,您应该在 run_constrained 部分中指定它:

requirements:
  …
  run_constraint:
    - optional_dependency >=1.2

关于python - 使用 conda 安装附加功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43389520/

相关文章:

python - 如何避免在scrapy python中按字母顺序存储字典中的元素

python - 覆盖Django RestFramework CreateModelMixin序列化器错误消息

python - 如何创建具有任意数量 channel 的图像? (Python)

python - CondaEnvException : Pip failed. 尝试使用 .yml 文件在 conda 中创建环境时出现 pip 子进程错误

julia - 如何在anaconda环境中安装Julia?

python - 新的 Pandas 产品/求和逻辑

python - 密谋杀死我的 python 安装

python-2.7 - 使用代理运行 conda

python - Makefile 无法使用 `conda activate`

python - 如何识别数据框中与前一行相比的行中的字符串变化?