2017-05-09 5 views
2

Ich klonte nur eine funktionierende Miniconda-Umgebung carnd-term1-gpu, die Tensorflow mit GPU arbeiten mit Tensorflow-Version '0.12.1' hatte. In der Umgebung waren viele andere Python-Pakete installiert. Ich wollte auf die neueste Version von tensorflow aktualisieren, so dass ich die Basis folgende auf tensorflow Ubuntu:Installieren von Tensorflow in geklonter Conda-Umgebung bricht Conda-Umgebung wurde geklont von

1) als die bestehende Arbeitsumgebung geklonten tflow

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

Diese erfolgreich abgeschlossen.

2) Quelle aktivieren TVorlauf und installieren pip mit

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 

Jetzt versuche ich, vorausgesetzt, die alte Umgebung ausgeführt werden, dass sie nicht geändert werden sollte.

source activate carnd-term1-gpu 
ipython 

Dann von ipython Prompt Typ import numpy as np und erhalten folgende:

--------------------------------------------------------------------------- 
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' 

Ich dachte, ich durch Klonen eine separate Umgebung geschützt war und nur, dass die Umwelt zu ändern, aber es scheint, dass die in einer Umgebung installieren geändert Verhalten in der anderen Umgebung. Genau das, was ich zu vermeiden glaubte! Was ist schief gelaufen und wie repariere ich das? Die neue Umgebung scheint bisher gut zu funktionieren.

Ich überprüfte die Dateidaten in beiden Umgebungen. Die carnd-term1-gpu Umgebung hatte Dateien, die am selben Tag datiert wurden, an dem ich das Upgrade in der tflow-Umgebung durchgeführt habe. Irgendwelche Ideen, wie das passieren könnte?

Ich habe versucht, die fehlende Datei einsumfunc.py zu meiner carnd-term1-gpu Umgebung hinzuzufügen und Ipython erneut gestartet. Dieses Mal, als ich import numpy as np eine andere Datei konnte nicht importiert werden konnte. So sieht es aus wie meine carnd-term1-gpu Umgebung ist beschädigt.

conda list für jede Umgebung vergleichen und suchen nur bei numpy, sehe ich folgendes: Für tflow Umgebung:

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

Und für carnd-term1-gpu Umgebung:

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

ich dann bei Revisionen sah mit conda list --revisions. Beide Umgebungen zeigen nur eine einzige Revision von rev 0. Gleichermaßen zeigt conda-meta/history nur die ursprünglichen Erstellungsdaten vom 13. Januar für carnd-term1-gpu und 9. Mai für tflow. So ist die Kombination dieser Version von pip:

pip      9.0.1     py35_0 conda-forge 

mit diesem Rad kombiniert:

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

beschädigt irgendwie die Umwelt carnd-term1-gpu. Das scheint entweder ein Fehler zu sein oder ich habe irgendwie ein beschädigtes Rad von der Tensorflow-Seite bekommen? Wenn es der spätere ist, wie könnte es eine andere Umgebung als die von der installierten beschädigen? Hinweis Version von Pip war in beiden Umgebungen identisch.

Ich habe Folgendes getan, um zu untersuchen, welche Dateien am Datum der Installation geändert wurden.

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

Dies zeigte 669 Dateien wurden erstellt/geändert. Die meisten davon waren in /site-packages/numpy/, aber auch six.py, pyparsing.py, /setuptools/, /pkg_resources/, easy_install.py, /werkzeug/ waren ebenfalls betroffen.

conda --version ist 4.2.12

Ich versuchte, wieder in Gang folgend zu meiner alten Umgebung zu bekommen.

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

Daraus ergab sich folgende Fehler:

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

Welche Version von Conda ist das? Share output für 'conda --version' –

+0

Ich habe am Ende des Beitrags die conda Version hinzugefügt. 4.2.12 –

+0

Könnten Sie bitte versuchen, die Version von Conda auf 4.3.17 zu aktualisieren, um zu sehen, ob das Problem weiterhin besteht? 'conda update conda' –

Antwort

1

Ich habe folgendes von continuum; "Um dies zu vermeiden, müssen Sie die --copy Flag mit Ihrer Klon-Operation verwenden. Kern von Condas Design ist die umfangreiche Verwendung von Hardlinks. Dieses genaue Problem ist eine der größten Fallstricke."

Also, wenn ich folgendes getan hätte, wenn ich zum ersten Mal der Umgebung geklont, ich die alten vermieden korrumpieren könnte:

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

Die Option --copy Install all packages using copies instead of hard- or soft-link‐ing wird aus in der Lage, Dateien zu überschreiben pip verhindern.

Einige laufende Diskussion darüber und wie es in die Zukunft gerichtet bekommen könnte, ist hier: conda pip breaks

Die einzige Option, die ich für die Wiederherstellung haben, ist jedes beschädigtes Paket neu zu installieren. Vorsicht bei der Verwendung von Pip mit ...

Verwandte Themen