2016-08-27 42 views
1

在蟒蛇我想创建使用与行开头的environment.yml文件的环境:无法安装含有水蟒森蚺环境4.0.0 np110py27_0

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。

要尝试隔离错误,我将Miniconda2安装在以前从未安装过任何Anaconda/Miniconda的不同64位Windows 7计算机(以管理员身份)。这是最新的64位Python 2.7系列(Miniconda2-4.1.11-Windows-x86_64.exe)。

但要安装蟒蛇= 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一致,但不是现在),但是如何确定这是否是潜在的问题呢?

感谢。

回答

0

潜在的问题是https://repo.continuum.io/pkgs/free/win-64/repodata.json文件中的一个临时错误,该文件此后得到修复。

对于任何人调查蟒蛇依赖冲突参考,下面是调查的细节,这种情况下的解决方法:

原因:

  • 的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“作为其info/index.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> = 4.2.0“
  • 但anaconda-4.0中的info/index.json文件。 0-np110py27_0.tar.bz2文件还指定必须安装特定版本“notebook 4.1.0 py27_2”
  • “notebook”版本(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文件现在将列出这将已安装的“水蟒= 4.0.0 = np110py27_0”,用“记事本”之外所有的库,但“记事本”将得到无论如何,由于安装由于“ipywidgets”和/或“ipywidgets”本身中的“notebook”要求,导致“_nb_ext_conf”中的“notebook> = 4.2.0”要求。

调查工具:

  • 命令 “康达信息安纳康达= 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”是一个嫌疑犯。