【问题标题】:using pip as a low priority 'channel' in conda environment在 conda 环境中使用 pip 作为低优先级“通道”
【发布时间】:2019-07-19 09:27:51
【问题描述】:

有没有办法在 conda 环境中使用 pip 作为某些包的“后备”选项,比如您可以有多个优先 conda 通道?

对于普通的 conda 频道,我的 environment.yml 如下:

name: my_env
channels:
  - defaults
  - conda-forge
dependencies:
  - some-package>=1.2.3

如果可能,some-package 将从默认频道安装,否则将安装 conda-forge。如果两个频道都没有合适的包版本,它将失败。

带有 pip 的 environment.yml:

name: my_env
channels:
  - defaults
  - conda-forge
dependencies:
  - pip
  - pip:
    - some-package>=1.2.3

some-package总是来自 pip。

但我想要的是这样的:

name: my_env
channels:
  - defaults
  - conda-forge
dependencies:
  - some-package>=1.2.3
  - pip
  - pip:
    - some-package>=1.2.3

包首先来自默认值,否则来自 conda-forge,或者来自 pip。
但是,这会在尝试 pip 之前出现 ResolvePackageNotFound 错误。有什么方法可以实现吗?

【问题讨论】:

    标签: python pip conda


    【解决方案1】:

    我在某处读到 conda 应被扩展以允许满足与 pip 安装包的依赖关系。但是我无法通过快速搜索找到参考,而且我不认为它是一个生产就绪的功能。我记得不是 conda 安装 pip 包,而是 conda 接受已经存在的 pip 安装的包。

    Anaconda 包根据其他 Anaconda 包定义它们的依赖关系。因此,conda 解决了 Anaconda 包在其自己的包和元数据世界中的依赖关系。有些包在 Anaconda 频道和 PyPI 中甚至没有相同的名称。

    换句话说:不,我不认为你想要的是可能的。当你想要pip 安装的东西时,你必须打电话给pip

    【讨论】:

      猜你喜欢
      • 2018-07-10
      • 1970-01-01
      • 1970-01-01
      • 2020-12-02
      • 1970-01-01
      • 2021-08-18
      • 2020-07-21
      • 1970-01-01
      • 2021-03-11
      相关资源
      最近更新 更多