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

时间:2016-08-27 19:31:05

标签: python-2.7 anaconda

在Anaconda中,我尝试使用以行开头的environment.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版本)。 &#34; conda列表&#34;输出包括conda 4.1.11和conda-env 2.5.2。

为了尝试隔离错误,我在不同的64位Windows 7计算机(作为管理员)上安装了Miniconda2,之前从未安装过任何Anaconda / Miniconda。这是最新的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没有在错误消息中命名第二个包,我如何确定导致冲突的原因以及如何解决?我已经看到了对冲突中其他&#34;规范的回应&#34;答案经常出现的问题&#34;将有问题的软件包安装到单独的python环境&#34;,但在这种情况下,无法使用软件包创建新环境。从干净的Miniconda安装开始也没有用。我怀疑Anaconda存储库中的某些内容已经发生了变化(这与过去工作的原始environment.yml一致但现在不一致),但我如何确定这是否是潜在问题?

感谢。

1 个答案:

答案 0 :(得分:0)

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

有关调查Anaconda依赖冲突的任何人的参考,以下是调查的详细信息,以及此案例的解决方法:

原因:

  • repodata.json文件(上面链接)本质上是https://repo.continuum.io/pkgs/free/win-64/中各种库的依赖关系的“主列表”。 “conda”命令使用此repodata.json文件。
  • 问题发生时,repodata.json文件错误地将“_nb_ext_conf”列为每个版本的ipywidgets的依赖项。 (“ipywidgets-4.1.1-py27_0.tar.bz2”里面的/info/index.json文件没有列出“_nb_ext_conf”作为依赖项,但我认为更新版本的ipywidgets需要它。)
  • “_nb_ext_conf-0.2.0-py27_0.tar.bz2”和“_nb_ext_conf-0.3.0-py27_0.tar.bz2”文件列出“notebook&gt; = 4.2.0”作为其信息/索引中的依赖项.json文件。
  • anaconda-4.0.0-np110py27_0.tar.bz2文件中的info / index.json文件(在environment.yml中指定“anaconda = 4.0.0 = np110py27_0”时使用)列出“ipywidgets 4.1。 1 py27_0“作为依赖。
  • 由于repodata.json中的临时问题,这个“ipywidgets 4.1.1 py27_0”导致conda认为需要安装“_nb_ext_conf”,因此导致conda认为“notebook&gt; = 4.2.0”也需要安装。
  • 但anaconda-4.0.0-np110py27_0.tar.bz2文件中的info / index.json文件还指定必须安装特定版本“notebook 4.1.0 py27_2”。
  • “笔记本”版本(4.1.0和&gt; = 4.2.0)的冲突要求导致“规格被发现存在冲突”错误。

解决方法:

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

这个新的environment.yml文件现在将列出每个由“anaconda = 4.0.0 = np110py27_0”安装的库,但“notebook”除外,但是“notebook”仍会安装,因为“笔记本&gt; = 4.2.0“由于”ipywidgets“而导致”_nb_ext_conf“中的要求,和/或”ipywidgets“本身中的”笔记本“要求。

调查工具:

  • 根据repodata.json,命令“conda info anaconda = 4.0.0 = np110py27_0”给出了指定包所需的库列表。我把这个库列表放到了temporary_environment.yml文件中。尝试从该temporary_environment.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”和“_nb_ext_conf”的实例。这指出“ipywidgets”是一个嫌疑人。