【问题标题】:Unable to install Anaconda environment containing anaconda 4.0.0 np110py27_0无法安装包含 anaconda 4.0.0 np110py27_0 的 Anaconda 环境
【发布时间】:2017-01-04 05:28:29
【问题描述】:

在 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.

我在 7 天前执行此操作时没有遇到任何问题,但当我昨天尝试执行此操作时出现错误。

我以管理员身份在 64 位 Windows 7 上运行 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 存储库中发生了一些变化(这将与过去的原始 environment.yml 一致,但现在不是),但我如何确定这是否是根本问题?

谢谢。

【问题讨论】:

    标签: python-2.7 anaconda


    【解决方案1】:

    根本问题是 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 >=4.2.0”列为依赖项。 json 文件。
    • anaconda-4.0.0-np110py27_0.tar.bz2 文件(在 environment.yml 中指定“anaconda=4.0.0=np110py27_0”时使用)中的 info/index.json 文件列出了“ipywidgets 4.1. 1 py27_0" 作为依赖项。
    • 由于repodata.json中的临时问题,这个“ipywidgets 4.1.1 py27_0”导致conda认为“_nb_ext_conf”需要安装,从而导致conda认为“notebook >=4.2.0”也需要安装已安装。
    • 但是anaconda-4.0.0-np110py27_0.tar.bz2文件中的info/index.json文件还指定必须安装具体版本“notebook 4.1.0 py27_2”。
    • “笔记本”版本(4.1.0 和 >=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”除外,但由于“由于“ipywidgets”和/或“ipywidgets”本身的“notebook”要求,“_nb_ext_conf”中的 notebook >=4.2.0” 要求。

    调查工具:

    • 命令“conda info anaconda=4.0.0=np110py27_0”根据repodata.json给出了指定包所需的库列表。我将这个库列表放入一个temporary_environment.yml 文件中。尝试从该temporary_environment.yml 文件创建环境导致conda 指定“笔记本”涉及冲突,这提示尝试省略“笔记本”。
    • 运行“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”是嫌疑人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 2015-02-13
      • 1970-01-01
      相关资源
      最近更新 更多