it-swarm.com.de

'Bibliothek nicht geladen: @rpath/libcudart.7.5.dylib' TensorFlow-Fehler auf dem Mac

Ich verwende OS X El Capitan (10.11.4).

Ich habe gerade TensorFlow mit der Pip-Installationsanleitung hier heruntergeladen.

Alles verlief reibungslos, obwohl ich einige Warnmeldungen erhalten habe:

The directory '/Users/myusername/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with Sudo, you may want the -H flag.

und

You are using pip version 6.0.8, however version 8.1.2 is available. Obwohl ich gerade pip installiert habe.

Als ich dann TensorFlow in Python getestet habe, bekam ich den Fehler:

>>> import tensorflow as tf
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/tensorflow/__init__.py", line 23, in <module>
    from tensorflow.python import *
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/tensorflow/python/__init__.py", line 48, in <module>
    from tensorflow.python import pywrap_tensorflow
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/tensorflow/python/pywrap_tensorflow.py", line 28, in <module>
    _pywrap_tensorflow = swig_import_helper()
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/tensorflow/python/pywrap_tensorflow.py", line 24, in swig_import_helper
    _mod = imp.load_module('_pywrap_tensorflow', fp, pathname, description)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/imp.py", line 243, in load_module
    return load_dynamic(name, filename, file)
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/tensorflow/python/_pywrap_tensorflow.so, 10): Library not loaded: @rpath/libcudart.7.5.dylib
  Referenced from: /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/tensorflow/python/_pywrap_tensorflow.so
  Reason: image not found

Nun, wenn ich versuche, pip uninstall tensorflow-0.10.0rc0 zu tun, sagt es mir, dass es nicht installiert ist.

Das, was ich diesem Problem am ähnlichsten gefunden habe, ist dieses Problem in den TensorFlow-GitHub-Dokumenten (die ich nicht versucht habe).

Wie kann ich deinstallieren, was es installiert hat, und TensorFlow ordnungsgemäß starten und installieren lassen?

19
Pro Q

Diese Fehlermeldung wird angezeigt, wenn Sie die GPU-fähige Mac OS-Version von TensorFlow (verfügbar ab Version 0.10) auf einem Computer installieren, auf dem CUDA nicht installiert ist.

Um den Fehler zu beheben, installieren Sie die CPU-Version für Python 2.7 oder 3.x wie folgt:

# Mac OS X, CPU only, Python 2.7:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.12.0-py2-none-any.whl
$ Sudo pip install --upgrade $TF_BINARY_URL

# Mac OS X, CPU only, Python 3.4 or 3.5:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.12.0-py3-none-any.whl
$ Sudo pip3 install --upgrade $TF_BINARY_URL

Siehe Tensorflow-Versionen: https://www.tensorflow.org/versions/

35
mrry

Hinzufügen zu @ mrrys Antwort Wenn Sie bereits CUDA installiert haben und der Fehler trotzdem angezeigt wird, kann dies daran liegen, dass sich die CUDA-Bibliotheken nicht in Ihrem Pfad befinden. Fügen Sie Ihrem ~/.bashrc oder ~/.zshrc Folgendes hinzu:

# export CUDA_HOME=/Developer/NVIDIA/CUDA-7.5 ## This is the default location on macOS
export CUDA_HOME=/usr/local/cuda
export DYLD_LIBRARY_PATH="$CUDA_HOME/lib:$DYLD_LIBRARY_PATH"
export PATH="$CUDA_HOME/bin:$PATH"

Kommentieren Sie entweder die CUDA_HOMEs oder bearbeiten Sie sie so, dass sie Ihre CUDA-Installation enthält. Wenn Sie nicht wissen, wo es installiert ist, versuchen Sie Folgendes:

find / -name "*libcudart*"
3
mirosval

Die Installation von CUDA ist natürlich ebenso wichtig wie die Sicherstellung, dass alle Pfade korrekt sind. Ich renne:

  • TensorFlow 0,12r0 
  • OSX 10.12.1 
  • python 2,7 von brauen 
  • virtualenv, um meine Python-Umgebungen zu trennen 
  • CUDA 8.0.55 
  • cudnn-8.0-osx-x64-v5.1

Auf meinem System hatte ich auch weitere Probleme, bei denen es den Anschein hat, dass das Problem von den dynamischen Bibliotheken stammt, die intern relative Pfade referenzieren. 

Um herauszufinden, dass @rpath von _pywrap_tensorflow.so referenziert wird, wird der folgende Code ausgeführt:

otool -l /Users/norman_h/.virtualenvs/env_name/lib/python2.7/site-packages/tensorflow/python/_pywrap_tensorflow.so

was unter anderem Folgendes zurückgab:

Load command 15
      cmd LC_RPATH
      cmdsize 128
      path $Origin/../../_solib_darwin/[email protected]_Uconfig_Ucuda_S_Scuda_Ccudart___Uexternal_Slocal_Uconfig_Ucuda_Scuda_Slib (offset 12)
Load command 16
      cmd LC_RPATH
      cmdsize 48
      path ../local_config_cuda/cuda/lib (offset 12)
Load command 17
      cmd LC_RPATH
      cmdsize 56
      path ../local_config_cuda/cuda/extras/CUPTI/lib (offset 12)

Es ist ersichtlich, dass die dynamische Bibliothek versucht, die CUDA-Bibliotheken in meiner virtuellen Umgebung zu finden, in der ich TensorFlow mit pip installiert habe. Es sucht nicht in den Pfaden meiner Systemumgebung. 

Ein Angriff auf eine Lösung besteht darin, die CUDA-Bibliotheken von ihrem /usr/local/cuda/lib-Speicherort aus dynamisch mit den Site-Paketen zu verknüpfen, in denen pip TensorFlow in meiner virtuellen Umgebung installiert hat.

mkdir /Users/norman_h/.virtualenvs/env_name/lib/python2.7/site-packages/tensorflow/local_config_cuda

cd /Users/norman_h/.virtualenvs/env_name/lib/python2.7/site-packages/tensorflow/local_config_cuda

ln -s /usr/local/cuda .

Müssen Sie die Verbindung erneut herstellen, wenn TensorFlow innerhalb der virtuellen Umgebung aktualisiert wird.

Ich denke, dass dies alles auf die Originalkompilierung von TensorFlow zurückgeht, die für die Pip-Installation gemacht wird, und ich habe keine Ahnung, wie ich einen Fix einreichen soll oder ob ich auch richtig bin. Möglicherweise muss die ursprüngliche Zusammenstellung von Tensorflow dynamischer und nicht statisch sein.

Viel Glück!

1
norman_h

Dieses Problem trat auf meinem MacOS auf, als ich versuchte, pyTorch zu importieren. Ich habe die Lösung in einer japanischen Site gefunden, die keine Köpfe und Schwänze machen kann, aus der einfach die Lösung als brew install libomp. Prost! Entschuldigung für das Posten in einem alten Thread, aber ich hielt es für notwendig.

0
cozek