Подтвердить что ты не робот

'Библиотека не загружена: @rpath/libcudart.7.5.dylib' Ошибка TensorFlow на Mac

Я использую OS X El Capitan (10.11.4).

Я только что загрузил TensorFlow, используя инструкции по установке pip здесь.

Все прошло довольно гладко, хотя я получил несколько предупреждающих сообщений вроде:

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.

и

You are using pip version 6.0.8, however version 8.1.2 is available. Хотя я только что установил pip.

Затем, когда я тестировал TensorFlow в Python, я получил ошибку:

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

Теперь, когда я пытаюсь сделать pip uninstall tensorflow-0.10.0rc0, он сообщает мне, что он не установлен.

Самое близкое, что мне показалось похожим на эту проблему, - этот вопрос в документах TensorFlow GitHub (которые я еще не пробовал).

Как я могу удалить все, что он установил, и правильно запустить TensorFlow?

4b9b3361

Ответ 1

Это сообщение об ошибке отображается, если вы устанавливаете версию Mac OS TensorFlow с поддержкой графического процессора (доступную начиная с версии 0.10) на компьютере, на котором не установлено CUDA.

Чтобы исправить ошибку, установите версию CPU для Python 2.7 или 3.x следующим образом:

# 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

См. версии tensorflow: https://www.tensorflow.org/versions/

Ответ 2

Чтобы добавить к @mrry answer, если у вас уже установлен CUDA, но вы все равно получите ошибку, это может быть связано с тем, что библиотеки CUDA не находятся на вашем пути. Добавьте в свой файл ~/.bashrc или ~/.zshrc следующее:

# 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"

Раскомментируйте любой из CUDA_HOME или отредактируйте его так, чтобы он содержал вашу установку CUDA. Если вы не знаете, где он установлен, попробуйте:

find / -name "*libcudart*"

Ответ 3

Конечно, установка CUDA имеет важное значение, а также гарантирует правильность всех путей. Я бегу:

  • TensorFlow 0.12r0
  • OSX 10.12.1
  • python 2.7 из brew
  • virtualenv для разделения моих сред python
  • CUDA 8.0.55
  • cudnn-8,0-OSX-64-v5.1

В моей системе у меня также были дополнительные проблемы, когда, похоже, проблема возникает из динамических библиотек, которые внутренне ссылаются на относительные пути.

Чтобы узнать, что @rpath ссылается на _pywrap_tensorflow.so, запускается следующий код:

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

который, среди прочего, возвращал следующее:

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)

Можно видеть, что динамическая библиотека пытается найти библиотеки CUDA в моей виртуальной среде, где я установил TensorFlow с pip. Он не смотрит в мои пути системной среды.

Решение проблемы заключается в том, чтобы динамически связывать библиотеки CUDA со своим местоположением /usr/local/cuda/lib в пакеты сайта, где pip установил TensorFlow внутри моей виртуальной среды.

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 .

Нужно будет повторно связать, когда pip обновит TensorFlow из виртуальной среды.

Я думаю, что все это возвращается к исходной компиляции TensorFlow, которая выполняется для установки pip, и я понятия не имею, как отправить исправление, или даже если я прав. Возможно, исходная компиляция Tensorflow должна быть более динамичной, а не статической.

Удачи!

Ответ 4

Эта проблема возникла у меня в macOS, когда я попытался импортировать pyTorch. Я нашел решение на японском сайте, который не может сделать из головы и хвоста, который просто дал решение как brew install libomp. Ура! Извините за публикацию в старой теме, но я подумал, что это необходимо.