問題描述
安裝過程
conda create -n conda-forge-tensorflow conda-forge::tensorflow
conda info -e
conda activate conda-forge-tensorflow
pip install ipython
python -c 'import tensorflow; print(tensorflow.__version__)'
先說結論
- conda 安裝tensorflow,依賴numpy;numpy依賴openblas;默認沒有安裝。
- 手動安裝openblas不完全,需要手動配置鏈接庫軟鏈
- 關鍵信息:
conda install openblas
# 建立軟鏈
ln -s libopenblas.dylib libopenblas_vortexp-r0.3.17.dylib
遇到問題
Traceback (most recent call last):
File "/Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/lib/python3.9/site-packages/numpy/core/__init__.py", line 22, in <module>
from . import multiarray
File "/Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/lib/python3.9/site-packages/numpy/core/multiarray.py", line 12, in <module>
from . import overrides
File "/Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/lib/python3.9/site-packages/numpy/core/overrides.py", line 7, in <module>
from numpy.core._multiarray_umath import (
ImportError: dlopen(/Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/lib/python3.9/site-packages/numpy/core/_multiarray_umath.cpython-39-darwin.so, 0x0002): Library not loaded: @rpath/libcblas.3.dylib
Referenced from: /Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/lib/python3.9/site-packages/numpy/core/_multiarray_umath.cpython-39-darwin.so
Reason: tried: '/Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/lib/libcblas.3.dylib' (no such file), '/Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/lib/libcblas.3.dylib' (no such file), '/Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/lib/python3.9/site-packages/numpy/core/../../../../libcblas.3.dylib' (no such file), '/Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/lib/libcblas.3.dylib' (no such file), '/Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/lib/libcblas.3.dylib' (no such file), '/Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/lib/python3.9/site-packages/numpy/core/../../../../libcblas.3.dylib' (no such file), '/Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/bin/../lib/libcblas.3.dylib' (no such file), '/Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/bin/../lib/libcblas.3.dylib' (no such file), '/usr/local/lib/libcblas.3.dylib' (no such file), '/usr/lib/libcblas.3.dylib' (no such file)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/lib/python3.9/site-packages/tensorflow/__init__.py", line 41, in <module>
from tensorflow.python.tools import module_util as _module_util
File "/Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/lib/python3.9/site-packages/tensorflow/python/__init__.py", line 41, in <module>
from tensorflow.python.eager import context
File "/Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/lib/python3.9/site-packages/tensorflow/python/eager/context.py", line 30, in <module>
import numpy as np
File "/Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/lib/python3.9/site-packages/numpy/__init__.py", line 150, in <module>
from . import core
File "/Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/lib/python3.9/site-packages/numpy/core/__init__.py", line 48, in <module>
raise ImportError(msg)
ImportError:
IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!
Importing the numpy C-extensions failed. This error can happen for
many reasons, often due to issues with your setup or how NumPy was
installed.
We have compiled some common reasons and troubleshooting tips at:
https://numpy.org/devdocs/user/troubleshooting-importerror.html
Please note and check the following:
* The Python version is: Python3.9 from "/Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/bin/python"
* The NumPy version is: "1.21.1"
and make sure that they are the versions you expect.
Please carefully study the documentation linked above for further help.
Original error was: dlopen(/Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/lib/python3.9/site-packages/numpy/core/_multiarray_umath.cpython-39-darwin.so, 0x0002): Library not loaded: @rpath/libcblas.3.dylib
Referenced from: /Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/lib/python3.9/site-packages/numpy/core/_multiarray_umath.cpython-39-darwin.so
Reason: tried: '/Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/lib/libcblas.3.dylib' (no such file), '/Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/lib/libcblas.3.dylib' (no such file), '/Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/lib/python3.9/site-packages/numpy/core/../../../../libcblas.3.dylib' (no such file), '/Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/lib/libcblas.3.dylib' (no such file), '/Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/lib/libcblas.3.dylib' (no such file), '/Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/lib/python3.9/site-packages/numpy/core/../../../../libcblas.3.dylib' (no such file), '/Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/bin/../lib/libcblas.3.dylib' (no such file), '/Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/bin/../lib/libcblas.3.dylib' (no such file), '/usr/local/lib/libcblas.3.dylib' (no such file), '/usr/lib/libcblas.3.dylib' (no such file)
排查
- 因為numpy需要線性計算庫依賴,openblas相關
- 但conda中沒有,用如下命令安裝:
conda install openblas
conda list | grep blas
blas 1.0 openblas defaults
libblas 3.9.0 11_osxarm64_openblas conda-forge
libcblas 3.9.0 11_osxarm64_openblas conda-forge
liblapack 3.9.0 11_osxarm64_openblas conda-forge
libopenblas 0.3.17 h9886b1c_1 defaults
openblas 0.3.17 hca03da5_1 defaults
openblas-devel 0.3.17 hca03da5_1 defaults
ll /Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/lib/libcblas.3.dylib
lrwxr-xr-x 1 enzhao enzhao 33B 3 16 18:22 /Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/lib/libcblas.3.dylib -> libopenblas_vortexp-r0.3.17.dylib
- 再次導入問題依舊,排查
libopenblas_vortexp-r0.3.17.dylib
文件,發現不存在。
- 建立軟鏈:
cd /Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/lib
# 建立軟鏈
ln -s libopenblas.dylib libopenblas_vortexp-r0.3.17.dylib
# 確認文件正常
less /Users/enzhao/suanec/libs/miniconda3/envs/conda-forge-tensorflow/lib/libcblas.3.dylib
python -c 'import tensorflow; print(tensorflow.__version__)'
2.7.0