M1 Mac导入Python库seaborn时dlopen导入错误解决求助
M1 Mac导入Seaborn报错求助
我在M1 Mac环境中尝试导入seaborn包时出现错误,该包已安装:最初用conda install seaborn安装失败,之后换了其他方法安装。环境中其他包均可正常使用,求解决办法。
错误日志
File "<stdin>", line 1, in <module> File "/Users/name/folder/folder/folder/seaborn-0.11.2/seaborn/__init__.py", line 2, in <module> from .rcmod import * # noqa: F401,F403 File "/Users/name/folder/folder/folder/seaborn-0.11.2/seaborn/rcmod.py", line 7, in <module> from . import palettes File "/Users/name/folder/folder/folder/seaborn-0.11.2/seaborn/palettes.py", line 9, in <module> from .utils import desaturate, get_color_cycle File "/Users/name/folder/folder/folder/labs/seaborn-0.11.2/seaborn/utils.py", line 10, in <module> from scipy import stats File "/opt/homebrew/Caskroom/miniforge/base/envs/TU_working_with_data/lib/python3.9/site-packages/scipy/stats/__init__.py", line 453, in <module> from ._stats_py import * File "/opt/homebrew/Caskroom/miniforge/base/envs/TU_working_with_data/lib/python3.9/site-packages/scipy/stats/_stats_py.py", line 38, in <module> from scipy.spatial.distance import cdist File "/opt/homebrew/Caskroom/miniforge/base/envs/TU_working_with_data/lib/python3.9/site-packages/scipy/spatial/__init__.py", line 104, in <module> from ._qhull import * ImportError: dlopen(/opt/homebrew/Caskroom/miniforge/base/envs/TU_working_with_data/lib/python3.9/site-packages/scipy/spatial/_qhull.cpython-39-darwin.so, 0x0002): Library not loaded: '@rpath/liblapack.3.dylib' Referenced from: '/opt/homebrew/Caskroom/miniforge/base/envs/TU_working_with_data/lib/python3.9/site-packages/scipy/spatial/_qhull.cpython-39-darwin.so' Reason: tried: '/opt/homebrew/Caskroom/miniforge/base/envs/TU_working_with_data/lib/python3.9/site-packages/scipy/spatial/../../../../liblapack.3.dylib' (no such file), '/opt/homebrew/Caskroom/miniforge/base/envs/TU_working_with_data/lib/python3.9/site-packages/scipy/spatial/../../../../liblapack.3.dylib' (no such file), '/opt/homebrew/Caskroom/miniforge/base/envs/TU_working_with_data/bin/../lib/liblapack.3.dylib' (no such file), '/opt/homebrew/Caskroom/miniforge/base/envs/TU_working_with_data/bin/../lib/liblapack.3.dylib' (no such file), '/usr/local/lib/liblapack.3.dylib' (no such file), '/usr/lib/liblapack.3.dylib' (no such file)
更新信息
执行conda list -n TU_working_with_data (seaborn|scipy)命令,输出如下:
# packages in environment at /opt/homebrew/Caskroom/miniforge/base/envs/TU_working_with_data: # # Name Version Build Channel scipy 1.8.1 py39h14896cb_2 conda-forge seaborn 0.11.2 pypi_0 pypi
解决方案
1. 修复缺失的LAPACK依赖
错误根源是scipy依赖的liblapack.3.dylib库找不到,M1 Mac的conda环境常出现这类问题。执行以下命令安装包含LAPACK的OpenBLAS:
conda activate TU_working_with_data conda install -c conda-forge openblas
2. 重新安装适配M1的scipy
若上面的方法无效,直接卸载并重新安装适配arm64架构的scipy:
conda activate TU_working_with_data conda uninstall scipy -y conda install -c conda-forge scipy
3. 统一包管理方式
当前seaborn来自pypi,scipy来自conda,混合包管理易引发冲突。建议将seaborn也换成conda安装:
conda activate TU_working_with_data pip uninstall seaborn -y conda install -c conda-forge seaborn
4. 检查环境架构
确保conda环境适配M1的arm64架构,执行:
conda activate TU_working_with_data python -c "import platform; print(platform.machine())"
若输出不是arm64,说明环境是x86_64兼容模式,需重新创建适配M1的环境:
conda create -n new_TU_env python=3.9 -c conda-forge conda activate new_TU_env conda install seaborn scipy -c conda-forge
内容的提问来源于stack exchange,提问作者Sean
相关产品推荐
相关产品推荐

