2017-05-09 52 views
2

克隆我只是克隆一個工作miniconda環境carnd-term1-gpu是有tensorflow與GPU使用tensorflow版本「0.12.1」工作。該環境安裝了很多其他python軟件包。我想升級到最新版本tensorflow的,所以我做了以下基於tensorflow Ubuntu:)克隆的現有工作環境在克隆暢達環境安裝tensorflow打破暢達環境它是從

1爲tflow

conda create --name tflow --clone carnd-term1-gpu 

這成功完成。

2)源激活TFLOW並安裝使用PIP

source activate tflow 
(tflow) [email protected]:~$ pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.1.0-cp35-cp35m-linux_x86_64.whl 

現在,我嘗試運行舊的環境假設,它不應該被改變。

source activate carnd-term1-gpu 
ipython 

然後從IPython中提示符下鍵入import numpy as np並得到如下:

--------------------------------------------------------------------------- 
ImportError        Traceback (most recent call last) 
<ipython-input-1-4ee716103900> in <module>() 
----> 1 import numpy as np 

/home/ai/miniconda3/envs/carnd-term1-gpu/lib/python3.5/site-packages/numpy/__init__.py in <module>() 
    140   return loader(*packages, **options) 
    141 
--> 142  from . import add_newdocs 
    143  __all__ = ['add_newdocs', 
    144    'ModuleDeprecationWarning', 

/home/ai/miniconda3/envs/carnd-term1-gpu/lib/python3.5/site-packages/numpy/add_newdocs.py in <module>() 
    11 from __future__ import division, absolute_import, print_function 
    12 
---> 13 from numpy.lib import add_newdoc 
    14 
    15 ############################################################################### 

/home/ai/miniconda3/envs/carnd-term1-gpu/lib/python3.5/site-packages/numpy/lib/__init__.py in <module>() 
     6 from numpy.version import version as __version__ 
     7 
----> 8 from .type_check import * 
     9 from .index_tricks import * 
    10 from .function_base import * 

/home/ai/miniconda3/envs/carnd-term1-gpu/lib/python3.5/site-packages/numpy/lib/type_check.py in <module>() 
     9   'common_type'] 
    10 
---> 11 import numpy.core.numeric as _nx 
    12 from numpy.core.numeric import asarray, asanyarray, array, isnan, \ 
    13     obj2sctype, zeros 

/home/ai/miniconda3/envs/carnd-term1-gpu/lib/python3.5/site-packages/numpy/core/__init__.py in <module>() 
    51 from . import shape_base 
    52 from .shape_base import * 
---> 53 from . import einsumfunc 
    54 from .einsumfunc import * 
    55 del nt 

ImportError: cannot import name 'einsumfunc' 

我還以爲是通過克隆一個單獨的環境,只有改變這種環境的保護,但它似乎安裝在一個環境改變在其他環境中的行爲。正是我以爲我在逃避!出了什麼問題,我該如何解決這個問題?到目前爲止,新的環境似乎很好。

我檢查在兩種環境下的文件日期。該carnd-term1-gpu環境有這樣的日期是,我沒有在tflow環境升級當天的文件。關於如何發生的任何想法?

我試着將缺失的文件einsumfunc.py添加到我的carnd-term1-gpu環境中,並再次啓動了Ipython。這一次當我做了import numpy as np一個不同的文件無法導入。所以它看起來像我的carnd-term1-gpu環境已損壞。

爲每個環境比較conda list,並只在numpy看,我看到以下內容: 對於tflow環境:

numpy      1.11.3     <pip> 
numpy      1.12.1     <pip> 
numpy      1.11.3   py35_blas_openblas_200 [blas_openblas] conda-forge 

併爲carnd-term1-gpu環境:

numpy      1.11.3     <pip> 
numpy      1.11.3   py35_blas_openblas_200 [blas_openblas] conda-forge 

我然後使用看着修訂conda list --revisions。兩種環境都只顯示一個rev 0的修訂版。同樣看着conda-meta/history只顯示1月13日爲carnd-term1-gpu和5月9日爲tflow原來的創建日期。所以這個版本PIP的組合:

pip      9.0.1     py35_0 conda-forge 

這個輪組合:

https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.1.0-cp35-cp35m-linux_x86_64.whl 

某種程度上破壞環境carnd-term1-gpu。這好像是一個錯誤,或者我從某種方式從tensorflow網站得到了一個損壞的輪子?如果是後者,它會如何破壞與安裝的環境不同的環境? 注意pip版本在兩種環境中都是相同的。

我做了以下調查在安裝日期更改了哪些文件。

find /home/ai/miniconda3/envs/carnd-term1-gpu/ -type f -newermt 2017-05-09 -ls | wc -l 

這表明669個文件被創建/修改。其中大部分在/site-packages/numpy/,但six.py,pyparsing.py,/setuptools/,,easy_install.py,/werkzeug/也受到影響。

conda --version是4.2.12

我嘗試了以下讓我的老環境再下去。

conda env export > environment.yml 
conda env create -f environment.yml -n sdc-gpu 

這導致了以下錯誤:

Could not import setuptools which is required to install from a source distribution. 
Traceback (most recent call last): 
    File "/home/ai/miniconda3/envs/sdc-gpu/lib/python3.5/site-packages/pip/req/req_install.py", line 387, in setup_py 
    import setuptools # noqa 
    File "/home/ai/miniconda3/envs/sdc-gpu/lib/python3.5/site-packages/setuptools/__init__.py", line 12, in <module> 
    import setuptools.version 
    File "/home/ai/miniconda3/envs/sdc-gpu/lib/python3.5/site-packages/setuptools/version.py", line 1, in <module> 
    import pkg_resources 
    File "/home/ai/miniconda3/envs/sdc-gpu/lib/python3.5/site-packages/pkg_resources/__init__.py", line 70, in <module> 
    import packaging.version 
ImportError: No module named 'packaging' 

CondaValueError: Value error: pip returned an error. 
+0

哪個版本的conda是這樣的?共享輸出爲'conda --version' –

+0

我在帖子結尾處添加了conda版本。 4.2.12 –

+0

請問您可以嘗試更新conda版本到4.3.17並查看問題是否依然存在? 'conda update conda' –

回答

1

我剛從continuum以下; 「爲了避免這種情況發生,您必須在克隆操作中使用--copy標誌。conda設計的核心是廣泛使用硬鏈接,這個確切問題是最大的缺陷之一。

所以,如果我做了以下當我第一次克隆的環境,我本來可以避免破壞舊:

conda create --name tflow --copy --clone carnd-term1-gpu

選項--copy Install all packages using copies instead of hard- or soft-link‐ing將防止PIP從能夠覆蓋文件。

這件事,怎麼可能在將來得到解決一些正在進行的討論是在這裏:conda pip breaks

我有一個恢復的唯一的選擇是重新安裝損壞的每一個包。小心當與conda使用點...