python - instalar - ''Biblioteca no cargada: @ rpath/libcudart.7.5.dylib'' Error TensorFlow en Mac
tensorflow cuda (4)
Estoy usando OS X El Capitan (10.11.4).
Acabo de descargar TensorFlow usando las instrucciones de instalación de pip here .
Todo salió bastante bien, aunque recibí algunos mensajes de advertencia como:
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.
y
You are using pip version 6.0.8, however version 8.1.2 is available.
Aunque acabo de instalar pip.
Luego, cuando probé TensorFlow en Python, recibí el error:
>>> 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
Ahora, cuando trato de hacer
pip uninstall tensorflow-0.10.0rc0
me dice que no está instalado.
Lo más parecido a este problema que he encontrado es este problema en los documentos de TensorFlow GitHub (que no he probado).
¿Cómo puedo desinstalar todo lo que instaló y hacer que TensorFlow funcione correctamente?
Ciertamente, instalar CUDA es esencial, al igual que garantizar que todas las rutas sean correctas. Estoy corriendo:
- TensorFlow 0.12r0
- OSX 10.12.1
- python 2.7 de brew
- virtualenv para separar mis entornos python
- CUDA 8.0.55
- cudnn-8.0-osx-x64-v5.1
En mi sistema también he tenido más problemas en los que parece que el problema se origina en las bibliotecas dinámicas que hacen referencia internamente a rutas relativas.
Para descubrir el
@rpath
se hace referencia desde
_pywrap_tensorflow.so
el siguiente código:
otool -l /Users/norman_h/.virtualenvs/env_name/lib/python2.7/site-packages/tensorflow/python/_pywrap_tensorflow.so
que devolvió, entre otras cosas, lo siguiente:
Load command 15
cmd LC_RPATH
cmdsize 128
path $ORIGIN/../../_solib_darwin/_U@local_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)
Se puede ver que la biblioteca dinámica está intentando encontrar las bibliotecas CUDA dentro de mi entorno virtual donde instalé TensorFlow con pip. No está buscando en las rutas del entorno de mis sistemas.
Un truco de una solución es vincular dinámicamente las bibliotecas CUDA desde su ubicación
/usr/local/cuda/lib
en los paquetes del sitio donde pip instaló TensorFlow dentro de mi entorno virtual.
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 .
Deberá volver a vincularse cuando pip actualice TensorFlow desde el entorno virtual.
Creo que todo esto se remonta a la compilación original de TensorFlow que se realiza para la instalación de pip y no tengo idea de cómo enviar una solución, o incluso si estoy en lo correcto. Quizás la compilación original de Tensorflow necesite ser más dinámica y no estática.
¡La mejor de las suertes!
Este mensaje de error se muestra si instala la versión para Mac OS de TensorFlow habilitada para GPU (disponible a partir de la versión 0.10 en adelante) en una máquina que no tiene instalado CUDA.
Para corregir el error, instale la versión de CPU para Python 2.7 o 3.x, de la siguiente manera:
# 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
Ver versiones de tensorflow: https://www.tensorflow.org/versions/
Este problema apareció en mi macOS cuando intenté importar pyTorch.
Encontré la solución en un
sitio japonés
que no puede hacer cara y cruz, lo que simplemente dio la solución como
brew install libomp
.
¡Aclamaciones!
Perdón por publicar en un hilo antiguo, pero pensé que era necesario.
Para agregar a la respuesta de @ mrry , si ya tiene CUDA instalado pero aún recibe el error, podría deberse a que las bibliotecas CUDA no están en su camino. Agregue lo siguiente a su ~ / .bashrc o ~ / .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"
Descomente cualquiera de los
CUDA_HOME
o
CUDA_HOME
para que contenga su instalación de CUDA.
Si no sabe dónde está instalado, intente:
find / -name "*libcudart*"