无法安装包含Anaconda 4.0.0 np110py27_0的Anaconda环境



在《Anaconda》中,我试图使用环境创建一个环境。以以下行开头的Yml文件:

name: mytest
dependencies:
- anaconda=4.0.0=np110py27_0

然而,当尝试创建环境时,我得到错误:

Fetching package metadata .........
Solving package specifications: ....
Error: The following specifications were found to be in conflict:
  - anaconda 4.0.0 np110py27_0
Use "conda info <package>" to see the dependencies for each package.

我在七天前这样做时没有遇到任何问题,但是当我昨天尝试这个时,我得到了错误。

我运行在Windows 7 64位管理员,Anaconda 2.2.0 (Python 2.7版本)。"conda list"输出包括conda 4.1.11和conda-env 2.5.2。

为了隔离错误,我在一台以前从未安装过Anaconda/Miniconda的64位Windows 7计算机上(以管理员身份)安装了Miniconda2。这是最新的64位Python 2.7系列(Miniconda2-4.1.11-Windows-x86_64.exe)。

但是尝试安装anaconda=4.0.0=np110py27_0,无论是到新环境还是到根环境,都会产生与我之前收到的相同的错误:

C:>conda install anaconda=4.0.0=np110py27_0
Fetching package metadata .........
.Solving package specifications: ....
The following specifications were found to be in conflict:
  - anaconda 4.0.0 np110py27_0
Use "conda info <package>" to see the dependencies for each package.
C:>conda create --name test400 anaconda=4.0.0=np110py27_0
Fetching package metadata .........
.Solving package specifications: ....
The following specifications were found to be in conflict:
  - anaconda 4.0.0 np110py27_0
Use "conda info <package>" to see the dependencies for each package.

如果conda没有在其错误消息中命名第二个包,我如何确定是什么导致了冲突,以及如何解决它?我看到过对其他"规范冲突"问题的回应,其中的答案通常是"将有问题的包安装到单独的python环境中",但在这种情况下,无法使用包创建新环境。从一个干净的Miniconda安装开始也不能工作。我怀疑Anaconda存储库中发生了一些变化(这将与原始环境保持一致)。yml在过去工作,但不是现在),但是我如何确定这是否是潜在问题?

谢谢。

潜在的问题是https://repo.continuum.io/pkgs/free/win-64/repodata.json文件中的临时错误,现已修复。

为任何调查Anaconda依赖冲突的人提供参考,这里是调查的细节,以及这种情况下的解决方案:

:

  • repodata。Json文件(上面的链接)本质上是https://repo.continuum.io/pkgs/free/win-64/中各种库的依赖项的"主列表"。conda命令使用这个repodata。json文件。
  • 当问题发生时,报告数据。Json文件错误地将"_nb_ext_conf"列为每个版本的ipywidgets的依赖项。(/信息/索引。"ipywidgets-4.1.1-py27_0.tar"中的Json文件。bz2"没有列出"_nb_ext_conf"作为依赖项,但我认为新版本的ipywidgets需要它。)
  • "_nb_ext_conf-0.2.0-py27_0.tar。Bz2"one_answers"_nb_ext_conf-0.3.0-py27_0.tar"。Bz2 " files list "notebook>=4.2.0"作为其info/index中的依赖项。json文件。
  • info/索引。anaconda-4.0.0-np110py27_0.tar. Json文件。bz2文件(在environment.yml中指定"anaconda=4.0.0=np110py27_0"时使用)将"ipywidgets 4.1.1 py27_0"列为依赖项。
  • 由于报告数据中的临时问题。这个"ipywidgets 4.1.1 py27_0"导致conda认为需要安装"_nb_ext_conf",从而导致conda认为"notebook>=4.2.0"也需要安装。
  • 但是info/index。anaconda-4.0.0-np110py27_0.tar. Json文件。bz2文件还指定必须安装特定的版本"notebook 4.1.0 py27_2"。
  • "notebook"版本(4.1.0和>=4.2.0)的需求冲突导致"specifications were found be in conflict"错误。

方法:

  • 首先,从环境中删除行"- anaconda=4.0.0=np110py27_0"。yml文件。
  • 接下来,替换环境中的该行。使用info/index的"depends"部分列出的每个库的Yml。Json文件从anaconda-4.0.0-np110py27_0.tar.bz2。(删除引号,用等号替换空格等,以将.json语法转换为环境。yml语法。)
  • 最后,从列表中删除"- notebook=4.1.0=py27_2"行。

这个新环境。Yml文件现在将列出"anaconda=4.0.0=np110py27_0"安装的每个库,除了"notebook",但"notebook"无论如何都会被安装,因为"_nb_ext_conf"中由于"ipywidgets"的"notebook>=4.2.0"要求,和/或"ipywidgets"本身的"notebook"要求。

调查工具:

  • 命令"conda info anaconda=4.0.0=np110py27_0"给出指定包所需的库列表,根据repodata.json。我把这个库列表放到一个临时环境中。yml文件。试图从临时环境创建一个环境。Yml文件导致conda指定"notebook"涉及冲突,这给了尝试省略"notebook"的提示。
  • 运行"conda info"列出当前在活动环境中安装的所有库。由temporary_environment创建的环境的输出。将Yml与先前成功安装了"anaconda=4.0.0=np110py27_0"的计算机环境的输出进行比较。这突出显示了"_nb_ext_conf"作为一个区别。
  • 我创建了一个批处理文件,对anaconda=4.0.0=np110py27_0中列出的每个库运行"conda info",并在输出中查找"notebook"one_answers"_nb_ext_conf"的实例。这指出"ipywidgets"是可疑的。

最新更新