M1 Mac导入tensorflow-text触发dlopen ImportError报错问题
问题根因
报错核心原因是虚拟环境内TensorFlow生态包来源混杂、版本不匹配:
- conda-forge源安装的tensorflow 2.8.1、pypi源安装的tensorflow-macos 2.8.0与安装的tensorflow-text 2.8.2版本没有严格对齐
- tensorflow-text 2.8.2编译时依赖的abseil-cpp符号版本,和当前环境内安装的abseil-cpp 20210324.2、以及
libtensorflow_framework.2.dylib导出的符号不匹配,导致dlopen加载动态库失败
修复步骤
- 第一步:激活目标虚拟环境,彻底卸载所有冲突的TensorFlow相关依赖,清除混装残留
conda activate env_tf pip uninstall -y tensorflow tensorflow-macos tensorflow-text tensorflow-hub keras tf-models-official conda remove -y tensorflow tensorflow-base abseil-cpp -y
- 第二步:统一通过pip安装版本严格匹配的TensorFlow基础包,适配M1芯片架构:
pip install tensorflow-macos==2.8.0 tensorflow-metal==0.4.0
注:tensorflow-metal 0.4.0是对应tensorflow-macos 2.8版本的M1 GPU加速组件,版本错配会直接导致导入失败
- 第三步:重新安装本地下载的arm64版本tensorflow-text 2.8.2 whl包
pip install /Users/michaelscoleri/Downloads/tensorflow_text-2.8.2-cp39-cp39-macosx_11_0_arm64.whl
- 第四步:安装剩余业务需要的依赖,指定和2.8版本TensorFlow兼容的版本号
pip install tensorflow-hub==0.12.0 tf-models-official==2.8.0
验证方式
安装完成后在Python交互环境逐行执行导入代码,无ImportError抛出即为修复成功:
import tensorflow as tf import tensorflow_hub as hub import tensorflow_text as text from official.nlp import optimization
后续在该环境安装TensorFlow生态相关包时,统一使用pip安装对应2.8.x的匹配版本,不要混用conda-forge源的TensorFlow包,避免再次出现动态库符号不匹配问题。
内容的提问来源于stack exchange,提问作者thecodeman
相关产品推荐
相关产品推荐

