【问题标题】:'Library not loaded: @rpath/libcudart.7.5.dylib' TensorFlow Error on Mac'库未加载:@rpath/libcudart.7.5.dylib' Mac 上的 TensorFlow 错误
【发布时间】:2016-12-07 05:05:37
【问题描述】:

我正在使用 OS X El Capitan (10.11.4)。

我刚刚使用 pip 安装说明 here 下载了 TensorFlow。

一切都很顺利,尽管我确实收到了一些警告消息,例如:

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。

然后,当我在 Python 中测试 TensorFlow 时,我得到了错误:

>>> 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 文档中的 this issue(我没有尝试过)。

我如何卸载它安装的任何东西并让 TensorFlow 正常运行?

【问题讨论】:

  • 您是否安装了支持 GPU 的版本,但没有安装 CUDA?
  • @mrry 很有可能。什么是 CUDA?如何安装?
  • 它是否告诉我在说明中的某处安装 CUDA 而我错过了?
  • @mrry 哦!我明白了,它位于标记为 (Optional, Linux) 的部分下的底部附近,所以我忽略了它。谢谢!

标签: python macos pip tensorflow osx-elcapitan


【解决方案1】:

当我尝试导入 pyTorch 时,我的 macOS 上出现了这个问题。我在 japanese site 中找到了解决方案,它无法做出正面和反面,只是将解决方案作为 brew install libomp 给出。干杯!很抱歉发布到旧线程,但我认为有必要。

【讨论】:

    【解决方案2】:

    如果您在未安装 CUDA 的机器上安装支持 GPU 的 Mac OS 版本的 TensorFlow(从 0.10 版开始提供),则会显示此错误消息。

    要修复错误,请安装 Python 2.7 或 3.x 的 CPU 版本,如下所示:

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

    【讨论】:

    • 我正要发布在顶部安装纯 CPU 版本的工作。谢谢!
    • 为什么不安装 CUDA?我想利用我的 GPU。这不是更快吗?
    • 如果你有一个支持 CUDA 的 GPU,那么你绝对应该安装 CUDA!请注意,最新 Mac 中的内置 GPU 不支持 CUDA,但您可以通过 following these instructions 检查您的是否支持。
    【解决方案3】:

    当然,安装 CUDA 是必不可少的,确保所有路径都正确无误。我在跑步:

    • TensorFlow 0.12r0
    • OSX 10.12.1
    • python 2.7 来自 brew
    • virtualenv 来分离我的 python 环境
    • CUDA 8.0.55
    • cudnn-8.0-osx-x64-v5.1

    在我的系统上,我还遇到了进一步的问题,问题似乎源于内部引用相对路径的动态库。

    要发现从_pywrap_tensorflow.so 引用的@rpath,运行以下代码:

    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/_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)
    

    可以看出,动态库正在尝试在我使用 pip 安装 TensorFlow 的虚拟环境中查找 CUDA 库。它不在我的系统环境路径中查找。

    解决方案的一个技巧是将 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 时需要重新链接。

    我认为这一切都可以追溯到为 pip 安装完成的 TensorFlow 的原始编译,我不知道如何提交修复,或者即使我是正确的。也许 TensorFlow 的原始编译需要更加动态而不是静态。

    祝你好运!

    【讨论】:

      【解决方案4】:

      要添加到@mrry's 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_HOMEs 或编辑它,使其包含您的CUDA 安装。如果不知道安装在哪里,试试:

      find / -name "*libcudart*"
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-18
      • 2019-06-23
      • 1970-01-01
      • 2018-03-11
      • 2017-12-12
      • 2016-11-13
      • 1970-01-01
      • 2022-10-06
      相关资源
      最近更新 更多