web-dev-qa-db-ja.com

「ライブラリがロードされていません:@ rpath / libcudart.7.5.dylib」MacのTensorFlowエラー

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のドキュメントでは、この問題に似ているとわかった最も近いものは この問題 です(これは試していません)。

インストールしたものをアンインストールして、TensorFlowを正しく実行するにはどうすればよいですか?

19
Pro Q

このエラーメッセージは、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

テンソルフローのバージョンを参照してください: https://www.tensorflow.org/versions/

35
mrry

@ 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*"
3
mirosval

すべてのパスが正しいことを確認することと同様に、CUDAをインストールすることが不可欠です。私は走っています:

  • TensorFlow 0.12r0
  • OSX 10.12.1
  • brewからのPython 2.7
  • my python環境を分離するvirtualenv
  • CUDA 8.0.55
  • cudnn-8.0-osx-x64-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/_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)

TensorFlowをpipでインストールした仮想環境内で、動的ライブラリが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の元のコンパイルは、静的ではなく、より動的である必要があります。

幸運を祈ります!

2
norman_h

この問題は、pyTorchをインポートしようとしたときにmacOSで発生しました。 日本のサイト で解決策を見つけましたが、頭と尻尾を作ることはできず、単にbrew install libompとして解決策を与えました。乾杯!古いスレッドに投稿してすみませんが、必要だと思いました。

0
cozek