找不到`protoc`命令
Posted
技术标签:
【中文标题】找不到`protoc`命令【英文标题】:Cannot find `protoc` command 【发布时间】:2019-03-26 12:25:29 【问题描述】:当我运行这个时:
protoc --python_out=. .\object_detection\protos\anchor_generator.proto
在命令行的张量流对象检测文件上,我得到:
'protoc' is not recognized as an internal or external command, operable program or batch file.
我遵循了protoc object_detection/protos/*.proto: No such file or directory 中的所有说明,但它们从未对我有用
除了我所做的搜索之外,我还尝试了这个命令:
py-3.6 -m pip install protobuf
它对我有用。
我又输入了命令
python_out=. .\object_detection\protos\anchor_generator.proto
但它仍然失败,这个:
C:\Users\laptop market\Downloads\bin\protoc object_detection/protos/*.proto --py_out=.
也失败了。
【问题讨论】:
更改标题并重新格式化文本。 protoc 是一个独立的程序,用于驱动编译所有语言的 protobuf 文件。你可以在这里得到它:github.com/protocolbuffers/protobuf Protobuf Compilation Issues的可能重复 【参考方案1】:您需要将位于 zip 文件中的 protoc.exe
文件保存到 C:\Users\Satyarth\AppData\Local\Programs\Python\Python36\Scripts
。
将路径中的“Satyarth”替换为您的用户名。
如果还是不行,把上面的路径放到环境变量中。
【讨论】:
【参考方案2】:我在 Windows 10 上解决问题的方法是
-
从链接https://github.com/protocolbuffers/protobuf/releases复制protoc文件https://github.com/protocolbuffers/protobuf/releases/download/v3.12.4/protoc-3.12.4-win64.zip
解压 zip 文件的内容。
Bin 目录包含 protoc.exe
更新环境变量以指向包含 protoc.exe 的 bin 目录
重新打开cmd作为环境变量只在新的命令窗口生效
运行 protoc object_detection/protos/*.proto --python_out=.
【讨论】:
【参考方案3】:转到此页面以查找最新版 Protobuf 的可下载文件:https://www.github.com/google/protobuf/releases/latest
然后,只需为您的操作系统下载以protoc
开头的 zip 文件。
接下来,解压它,你会得到一个protoc
应用程序。
最后,你可以把它放在你的本地机器上。
【讨论】:
【参考方案4】:首先,确保您的系统上安装了 protobuf >=3。
Windos 上的 protobuf 通常通过你的 Python 包安装
经理,例如conda 或 pip,并且应该已经在您的环境中。
您可以检查它是否使用conda list
或
pip freeze
.
如果没有安装,直接运行
conda install protobuf
要么
pip install protobuf
【讨论】:
【参考方案5】:-
当您从 https://github.com/protocolbuffers/protobuf/releases 下载
.zip
时,请确保您获取的文件适用于您的操作系统。
对于Windows,在环境变量中,你需要添加包含protoc.exe
的文件夹,所以在我的例子中是C:\Program Files\GoogleProtobuf\bin
这对我有用。
【讨论】:
【参考方案6】:前段时间我也遇到了这个错误 要解决此问题:按照下列步骤操作:
从这个github repo 安装适用于您的操作系统的协议,对我来说它是protoc-3.13.0-win64.zip
解压 zip 文件并将其放入永久保存的文件夹中
转到 protocFolder 中的 bin 文件夹,在我的情况下,我必须转到F:\Programing_stuff\ML\protoc-3.17.3-win64\bin 或者只是找到protoc.exe
文件所在的位置并复制路径
然后在 Windows 搜索栏中输入path
并点击Edit the system environment variables
以及bin文件夹的路径
希望这有帮助,如果不检查这个video 或者这个website(如果你想安装TensorFlow)
【讨论】:
【参考方案7】:根据您的平台,您可能需要在本地安装 protobuf。有关详细说明,请参阅 the docs。
【讨论】:
我的 windows 是 10,64 位的。你指的是哪个平台?【参考方案8】:首先考虑将Protobuf Compiler
安装在C:\Program Files 文件夹中。然后每次要使用Tensorflow Object Detection API 时都需要编译protobuf
。为此,请打开 ../models/research
目录中的 cmd 并运行
“C:\Program Files\protoc-<PROTO_VERSION>\bin\protoc.exe” object_detection/protos/*.proto --python_out=.
其中<PROTO_VERSION>
是您正在使用的protobuf 编译器的版本(例如protoc-3.5.1-win64
或您为protobuf 选择的文件夹的名称)。
请注意,您应该在每个启动的 cmd 窗口中编译 protobuf 以使用对象检测。
【讨论】:
当我在路径c:\program files中保存protobuf编译器zip文件夹时,出现一条短信“您无权保存在此位置联系管理员获取权限”。 windows 是 10 64 位,我安装了 protoc-3.5.1-win32。 尝试使用管理员权限将您的 zip 文件夹解压到Program files
此命令出现“C:\Program' 不是内部或外部命令、可运行程序或批处理文件。”使用管理员权限并键入此命令“C:\Program Files\protoc-protoc-3.6.1-win32\bin\protoc.exe” object_detection/protos/*.proto --python_out=。在 c:\tensorflow\models\research
您是否将路径放入引号中,例如 "C:\Program Files\..."
而不是只写 C:\Program Files\...
?【参考方案9】:
我的 windows 解决方案:
从here下载protoc-3.18.0-win64.zip 从 bin 目录中提取 zip 并复制 proto.exe 并将其粘贴到 models/research 文件夹中 然后运行这个命令protoc object_detection/protos/*.proto --python_out=.
【讨论】:
以上是关于找不到`protoc`命令的主要内容,如果未能解决你的问题,请参考以下文章
--go_out:protoc-gen-go:系统找不到指定Windows 10的文件
Gradle protoc 插件找不到默认的 google proto 文件