2016-08-27 55 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」是一個嫌疑犯。