WSL2环境下无法加载带DirectML的Tensorflow问题求助
问题解决:WSL2 Ubuntu中TensorFlow导入时libtfdml_plugin.so符号错误
问题描述
在WSL2的Ubuntu 18.04/20.04 Anaconda环境中执行import tensorflow as tf时,触发以下报错:
NotFoundError: /home/andre/anaconda3/lib/python3.8/site-packages/tensorflow-plugins/libtfdml_plugin.so: symbol _ZN4absl12lts_2021110213hash_internal15MixingHashState5kSeedE version tensorflow not defined in file _pywrap_tensorflow_internal.so with link time reference
已确认Windows版本、WSL2内核符合要求,主机CUDA驱动已安装,Windows端Anaconda可正常运行TensorFlow,多次卸载重装WSL内的TensorFlow、更换Ubuntu版本均无效。
解决方案
该错误源于DirectML TensorFlow插件(libtfdml_plugin.so)与当前TensorFlow版本的absl依赖库版本不兼容,WSL2环境下误装DirectML相关组件会触发此冲突,可通过以下方式解决:
1. 移除tensorflow-plugins目录
直接删除冲突的插件目录:
rm -rf /home/andre/anaconda3/lib/python3.8/site-packages/tensorflow-plugins
删除后重新尝试导入TensorFlow。
2. 禁用TensorFlow插件加载
在导入TensorFlow前设置环境变量阻止插件加载:
import os os.environ['TF_PLUGIN_DIR'] = '' import tensorflow as tf
或在终端启动notebook前设置环境变量:
export TF_PLUGIN_DIR='' jupyter notebook
3. 创建纯净虚拟环境
避免环境残留依赖冲突,新建环境并安装适配CUDA的TensorFlow:
# 创建新环境 conda create -n tf_env python=3.8 # 激活环境 conda activate tf_env # 安装与CUDA版本匹配的TensorFlow(示例为2.10,对应CUDA 11.2) pip install tensorflow==2.10
注意:TensorFlow版本需与WSL内安装的CUDA Toolkit版本匹配(WSL内无需安装CUDA驱动,仅需Toolkit)。
4. 卸载tensorflow-directml组件
若曾安装过DirectML版本的TensorFlow,彻底卸载:
pip uninstall -y tensorflow-directml conda uninstall -y tensorflow-directml
之后重新安装官方TensorFlow包。
补充说明
WSL2中使用CUDA加速TensorFlow仅需:
- Windows主机安装对应版本NVIDIA驱动
- WSL内安装匹配版本的CUDA Toolkit
- 安装对应版本的官方TensorFlow
无需安装DirectML相关组件,这是引发冲突的核心原因。
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

