TensorFlow原生运行时加载失败问题求助(DINet项目)
嗨,看起来你在跑DINet项目的inference.py时栽在了TensorFlow加载这一步,我先把你贴的错误日志整理好,再给你捋捋可能的解决方向:
首先是你碰到的报错片段(已补全格式):
Traceback (most recent call last): File "inference.py", line 1, in from utils.deep_speech import DeepSpeech File "C:\Users\Ahmed\Wdinet\utils\deep_speech.py", line 7, in import tensorflow as tf File "C:\Users\Ahmed\anaconda3\envs\dinet\lib\site-packages\tensorflow\__init__.py", line 99, in from tensorflow_core import * File "C:\Users\Ahmed\anaconda3\envs\dinet\lib\site-packages\tensorflow_core\__init__.py", line 28, in from tensorflow.python import pywrap_tensorflow # pylint: disable=unused-import File "C:\Users\Ahmed\anaconda3\envs\dinet\lib\site-packages\tensorflow\__init__.py", line 50, in __getattr__ module = self._load() File "C:\Users\Ahmed\anaconda3\envs\dinet\lib\site-packages\tensorflow\__init__.py", line 44, in _load module = _importlib.import_module(self.__name__) File "C:\Users\Ahmed\anaconda3\envs\dinet\lib\importlib\__init__.py", line...
从报错来看,核心是TensorFlow内部模块加载出了问题,大概率是环境依赖或版本兼容的锅,咱一步步来排查:
先确认项目要求的TensorFlow版本
DINet这类偏老的项目大概率依赖TensorFlow 1.x系列(毕竟报错里出现了tensorflow_core,这是TF1.x到2.x过渡阶段的特殊包结构),你先去项目的requirements.txt或者README文件里找找,看有没有明确指定的TF版本,别自己瞎装最新版,版本不匹配绝对是这类问题的重灾区。卸载现有TF包,重装指定版本
打开Anaconda Prompt,先激活你的dinet环境:conda activate dinet然后把现有TF相关包全卸干净:
pip uninstall tensorflow tensorflow_core -y接着装项目要求的版本,比如如果要求1.15.0的话就跑:
pip install tensorflow==1.15.0装完可以先在控制台测一下:打开Python交互窗口,输入
import tensorflow as tf,看能不能正常加载,要是这里不报错了,再回去跑inference.py试试。如果还是报错,考虑重建虚拟环境
有时候Anaconda环境会因为各种原因(比如中途断网、权限问题)导致部分包损坏,这时候直接重建环境更省心:- 先退出当前环境:
conda deactivate - 删除旧环境:
conda remove -n dinet --all - 重新创建环境:比如选Python 3.7(TF1.x对3.7的兼容性最好)
conda create -n dinet python=3.7 -y - 激活环境后,把项目所有依赖重新装一遍,严格按照项目要求来。
- 先退出当前环境:
对了,你的报错最后截断了,如果上面的步骤都试了还是不行,你可以把完整的Traceback贴出来,特别是最后那部分具体的错误提示,这样能更精准定位问题~
备注:内容来源于stack exchange,提问作者Ahmed Chebli Alami

