update instalar como python osx macos pip tensorflow osx-elcapitan

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