Python 使用pip作为低优先级';频道';在康达环境中

Python 使用pip作为低优先级';频道';在康达环境中,python,pip,conda,Python,Pip,Conda,有没有一种方法可以将pip用作conda环境中某些包的“后备”选项,比如您可以有多个优先的conda通道 对于正常的conda通道,my environment.yml将如下所示: name: my_env channels: - defaults - conda-forge dependencies: - some-package>=1.2.3 其中,一些包将在可能的情况下从默认通道安装,否则将从conda forge安装。如果两个通道都没有合适的软件包版本,它将失败 带有

有没有一种方法可以将pip用作conda环境中某些包的“后备”选项,比如您可以有多个优先的conda通道

对于正常的conda通道,my environment.yml将如下所示:

name: my_env
channels:
  - defaults
  - conda-forge
dependencies:
  - some-package>=1.2.3
其中,
一些包
将在可能的情况下从默认通道安装,否则将从conda forge安装。如果两个通道都没有合适的软件包版本,它将失败

带有pip的environment.yml:

name: my_env
channels:
  - defaults
  - conda-forge
dependencies:
  - pip
  - pip:
    - some-package>=1.2.3
其中
一些包总是来自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错误。有什么办法可以做到这一点吗?

我在某个地方读到过,康达应该被扩展,以允许满足pip安装包的依赖性。但我无法通过快速搜索找到参考资料,而且我不认为这是一个可用于生产的功能。我记得的不是conda安装pip软件包,而是conda接受已经存在的由pip安装的软件包

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

换句话说:不,我不认为你想要的是可能的。当您想通过
pip
安装某些东西时,必须调用
pip