Pycharm上运行测试文件出错ImportError: cannot import name 'anchor_generator_pb2'

问题遇到的现象和发生背景

运行

VERIFICATION_SCRIPT = os.path.join(paths['APIMODEL_PATH'], 'research', 'object_detection', 'builders', 'model_builder_tf2_test.py')
# Verify Installation
!python {VERIFICATION_SCRIPT}

测试文件
报错

问题相关代码,请勿粘贴截图
VERIFICATION_SCRIPT = os.path.join(paths['APIMODEL_PATH'], 'research', 'object_detection', 'builders', 'model_builder_tf2_test.py')
# Verify Installation
!python {VERIFICATION_SCRIPT}

运行结果及报错内容

ImportError: cannot import name 'anchor_generator_pb2' from 'object_detection.protos' (C:\Users\ZZH\PycharmProjects\tfnew\venv\lib\site-packages\object_detection\protos_init_.py)

我的解答思路和尝试过的方法

都重头再来了没辙了

我想要达到的结果

正常运行测试文件

原因
在执行这个之前,你需要先编译一下proto文件,可能你没有执行这一步

protoc object_detection/protos/*.proto --python_out=.

如果还不行的话,那就是环境变量的问题
尝试下面的解决方法。


解决步骤:

方法一
1、正常安装
2、添加环境变量,可参考:

3、在执行之前model_builder_test.py,您需要编译 proto 文件,如下所示:

# From tensorflow/models/
protoc object_detection/protos/*.proto --python_out=.

方法二
对于windows来说 可以用源码安装的简单快速的方法

1、为 Windows 下载的 protobuf v3.4:https://github.com/google/protobuf/releases/tag/v3.4.0
2、将 protoc.exe 放在“research”文件夹中
3、然后运行下面的命令。

protoc object_detection/protos/.proto --python_out=.
python object_detection/builders/model_builder_test.py

anchor_generator_pb2.py 文件位于 object_detection/protos

参考链接:

如果上述方法还不行,可以参考:


如有问题及时沟通

import错误,包名和函数名正确吗?

看下有没有在同一个文件夹中,注意一下路径问题,再看下包什么的有没有问题。都不行的话,重新建一个文件夹单独拿出来进行实验看是否有错

大哥你这不就是缺个函数库嘛,网上下个开源的装一下就好了啊

不介意的话,发我测试文件

Python在搜索路径的时候有个顺序

>>> sys.path
['', '/home/caffe/python', '/home/', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/dist-packages', '/usr/local/lib/python3.4/dist-packages/setuptools-28.8.0-py3.4.egg', '/usr/lib/python3/dist-packages']

第一个空格代表当前目录,首先被搜索,然后是环境变量PYTHONPATH目录,python标准库目录,任何.pth包含的目录。
所以,,,虽然代码没错,解释器也对,也能找到模块里的类,但就是用不了,因为它首先找到当前目录里面的文件,就不会再找到库里的模块了。
不仅是文件名,变量名的取法也应该较讲究才对。
另外可用file属性查看模块的完整文件名,看是否对应

import PIL
print( PIL.__file__)
输出
/usr/lib/python3/dist-packages/PIL/__init__.py

另一个问题 No module named C.:

找不到模块的原因,python2和3对import的处理不同,这里只说python3,它是绝对导入,import时必须要写上路径才可以找到模块。

A—>B
A—>C
在B中要引用C模块
必须要写成 from A import C
直接写import C则就会提示 No module named C.

如有帮助,请采纳,十分感谢!

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632