找不到`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 listpip 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 文件

在 Flutter/Android 构建中找不到 protoc-3.9.2-osx

protoc 在哪里以及如何安装它?

ubuntu20.04找不到start命令

ubuntu20netplan命令找不到