【问题标题】:Conda thinks package specifications are incompatible, even though they are notConda 认为包规范不兼容,即使它们不兼容
【发布时间】:2021-02-03 20:23:45
【问题描述】:

运行命令:

 conda create -y --name test -c bioconda glimmer=3.02 blast=2.9.0 trnascan-se=2.0.6 hhsuite

产生以下错误输出:

Found conflicts! Looking for incompatible packages.
This can take several minutes.  Press CTRL-C to abort.
failed                                                                                                                                                                                 

UnsatisfiableError: The following specifications were found to be incompatible with each other:

Output in format: Requested package -> Available versions

Package perl conflicts for:
blast=2.9.0 -> perl[version='>=5.26.2,<5.26.3.0a0']
hhsuite -> perl[version='>=5.26.2,<5.26.3.0a0']
trnascan-se=2.0.6 -> perl[version='>=5.26.2,<5.26.3.0a0']
blast=2.9.0 -> entrez-direct -> perl[version='5.22.0.*|>=5.26.0,<5.27.0a0|>=5.26.2,<5.27.0a0']

Package libcxx conflicts for:
blast=2.9.0 -> pcre[version='>=8.44,<9.0a0'] -> libcxx[version='>=10.0.0']
blast=2.9.0 -> libcxx[version='>=4.0.1|>=9.0.1']

Package libcxxabi conflicts for:
blast=2.9.0 -> libcxx[version='>=4.0.1'] -> libcxxabi==4.0.1[build='hebd6815_0|hcfea43d_1']
hhsuite -> libcxx[version='>=4.0.1'] -> libcxxabi==4.0.1[build='hebd6815_0|hcfea43d_1']

从输出中,包的依赖项似乎都没有相互冲突。如何创建这个环境?

【问题讨论】:

  • 错误信息真的没有帮助(不是你的错)。解决问题的一种方法是从命令中删除一两个包,看看它是否解决了;这至少可以帮助您缩小问题的范围。我假设您需要精确的固定版本 glimmerblasttrnascan-se,否则这些引脚可能会导致问题。

标签: anaconda conda miniconda


【解决方案1】:

Bioconda 通道规范

无法解决可能是由于具有不标准的通道规范。1The official recommendation for Bioconda 是使用:

channels:
  - conda-forge
  - bioconda
  - defaults

strict priority。我可以使用以下 YAML2

毫无问题地解决

foo.yaml

name: foo
channels:
  - conda-forge
  - bioconda
  - defaults
dependencies:
  - glimmer=3.02 
  - blast=2.9.0 
  - trnascan-se=2.0.6 
  - hhsuite

然后

conda env create -n foo -f foo.yaml

但是,如果我不包含 conda-forge 频道,我会收到与 OP 类似的错误。

不是决定性的,但值得一试。


[1] 至于包冲突报告输出没有帮助:不幸的是,这个问题已经有一段时间了。

[2] 考虑使用 YAML 代替 shell 单行代码,尤其是在科学环境中。它产生一个环境是如何指定的清单工件,然后可以进行版本控制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-10
    • 2019-11-23
    相关资源
    最近更新 更多