Windows环境实时目标检测报错:No module named 'tensorflow.compat.v1'
解决
ModuleNotFoundError: No module named 'tensorflow.compat.v1' 问题 嘿,这个问题有点意思——你明明装了TensorFlow 1.9,却碰到了只有TF2才会用的tensorflow.compat.v1导入报错。咱来一步步排查解决:
1. 先确认你跑脚本的环境真的装了TF1.9
很多人会同时有好几个Python环境(比如系统默认的、虚拟环境、Anaconda环境),大概率你运行脚本的环境和装TF1.9的不是同一个。
- 打开命令行,跑这个命令看看当前环境的TF版本:
python -c "import tensorflow; print(tensorflow.__version__)" - 如果输出不是1.9.0,那就是环境错了。赶紧切换到装了TF1.9的环境:
- 虚拟环境的话,用
venv\Scripts\activate激活(把venv换成你的虚拟环境名) - Anaconda环境就用
conda activate 你的环境名
- 虚拟环境的话,用
2. 直接修改label_map_util的导入语句
要是你的环境确实是TF1.9,但这个工具文件用了TF2的兼容写法,那改一行代码就行:
- 打开
C:\Users\1rock\Documents\TensorFlow\models\research\object_detection\utils\label_map_util.py - 找到第27行的
import tensorflow.compat.v1 as tf,换成:import tensorflow as tf - 保存后再跑脚本试试。TF1.x本身不需要compat.v1这个兼容层,直接导入tf就够了。
3. 检查models仓库的分支是否匹配TF1.9
你下载的models仓库可能是默认的main分支(对应TF2.x),而TF1.x得用旧分支才行:
- 进到你的models目录:
cd C:\Users\1rock\Documents\TensorFlow\models - 看看当前分支:
git branch - 如果不是TF1.x的分支,切换到对应的版本,比如:
git checkout r1.9 - 切换后记得重新跑一遍教程里编译protoc的步骤,再测试脚本。
4. 清缓存后重新装TF1.9
有时候pip缓存会搞事情,导致安装不完整,试试彻底重装:
pip cache purge pip install --ignore-installed --upgrade tensorflow==1.9
装完再确认一遍TF版本,确保没问题。
内容的提问来源于stack exchange,提问作者ISETHS GT
相关产品推荐
相关产品推荐

