无法构建 protobuf 去端点

Unable to build protobuf to go endpoint

使用 protobuf 版本 2.6.1(我通过自制软件安装)

我正在尝试 运行

$ protoc --go_out=../cloud/ *.proto

我一直收到这个错误。

$ protoc-gen-go: program not found or is not executable
$ --go_out: protoc-gen-go: Plugin failed with status code 1.

我的 go 路径中安装了 protoc-gen-go。 还有其他人有这个问题吗?

protoc-gen-go 需要在您的 shell 路径中,即 PATH 环境变量中列出的目录之一,即不同于 Go 路径。您可以通过在命令行中简单地键入 protoc-gen-go 来测试它:如果它显示 "command not found" (或类似的)那么它不在您的 PATH.

在 Ubuntu 18.04 上,经验证可以解决此问题:

sudo apt-get install golang-goprotobuf-dev

使用

$ go get -u github.com/golang/protobuf/{proto,protoc-gen-go}

比使用

更安全
$ sudo apt-get install golang-goprotobuf-dev

因为最新的protoc-gen-go正在使用库github.com/golang/protobuf/proto,但是apt-get中的protoc-gen-go使用现在不存在的库code.google.com/p/goprotobuf/proto

我遇到了同样的问题。

$ protoc --go_out=plugins=grpc:pb/ *.proto
protoc-gen-go: program not found or is not executable
--go_out: protoc-gen-go: Plugin failed with status code 1.

解决方法如下:

找到protoc-gen-go的安装目录,一定在你的$PATH.

export PATH=$PATH:/path/to/dir

你最好把它添加到你的 .bash_profile

echo $"export PATH=$PATH:$(/path/to/dir)" >> ~/.bash_profile
source ~/.bash_profile

那一切就OK了

我是怎么解决的:

  1. 通过 运行ning 将 $GOPATH/bin 添加到 PATH export PATH=$PATH:$GOPATH/bin
  2. .bash_profile 文件内的 export PATH=$PATH:$GOPATH/bin 行上方添加 export GOPATH=$(go env GOPATH)
  3. 运行 go get -u 再次获取所需的包。
  4. 运行 您的代码 protoc --go_out=../cloud/ *.proto
  1. 你应该正确定义你的 GO_PATH - 你的 go 包在哪里 居住。 换句话说,GO_PATH 是你的 go 工作区。 GO_PATH 应该是 ~/go.

  2. protoc-gen-go 应该在您的 PATH 中。安装后 protoc-gen-go 位于 $GO_PATH/bin


将这两行重要的内容添加到您的 ~/.bash_profile:

export GO_PATH=~/go
export PATH=$PATH:/$GO_PATH/bin

然后您需要开始一个新的 shell 会话或只输入以下行:

$ source ~/.bash_profile

Mby 会帮助某人。我在 Fedora 29.

当我安装 Go 时我做了:

echo 'export GOPATH=$HOME/Go' >> $HOME/.bashrc
source $HOME/.bashrc

所以我设置了 GOPATH。 接下来我做:

echo 'export PATH=$PATH:$GOPATH/bin' >> $HOME/.bashrc
source $HOME/.bashrc

我的 protoc 编译器工作起来很有魅力。

确保 PATH 变量中 proton-gen-go 的路径是绝对路径(即 /Users/me/go/bin 而不是 ~/go/bin

显然protoc不知道如何扩展~

我有 Ubuntu 18.04.02 LTS 并使用

安装了 protoc
sudo apt install protobuf-compiler

我的 GOPATH 和 GOBIN 设置正确,但是当我执行 protoc --go_out=. <filename> 我得到

protoc-gen-go: program not found or is not executable
--go_out: protoc-gen-go: Plugin failed with status code 1.

阅读了很多地方后,能够找到这样做

go get -u github.com/golang/protobuf/protoc-gen-go

能够解决问题。 希望这可以帮助那里的人。

我解决这个问题的方法是:

将 protoc-gen-go 从 go 工作区的 go bin 文件夹复制到 /usr/local/bin/

运行 你的命令和之前一样 "protoc --go_out=../cloud/ *.proto"

如果您使用的是 Fedora,请确保安装了包 "protoc-gen-go",并且它的二进制文件在您的 shel PATH 中。

$sudo dnf install protoc-gen-go -y

直接来自grpc documentation

协议编译器的 Go 插件:

使用以下命令为 Go 安装协议编译器插件:

$ export GO111MODULE=on  # Enable module mode
$ go get google.golang.org/protobuf/cmd/protoc-gen-go \
         google.golang.org/grpc/cmd/protoc-gen-go-grpc

更新您的 PATH 以便 protoc 编译器可以找到插件:

$ export PATH="$PATH:$(go env GOPATH)/bin"

如果找到此页面是因为您在 运行 proto:

时在控制台中收到错误消息
Protoc command not found

如果您使用 linux,请按照以下说明操作:

  1. 在此处下载协议文件 https://github.com/protocolbuffers/protobuf/releases/tag/v3.19.4 (在我的案例中,我曾经下载 protoc-3.19.4-linux-x86_64.zip
  2. 解压此文件夹中的文件`/home/your_username/.local
  3. 那么你会得到这样的:/home/your_username/.local/bin/protoc
  4. 利润。这将通过在您的终端中输入“protoc”来工作

enter image description here

我已经安装了protoc 3.20.0。 但是我没有得到为 Golang 生成代码的标签。 我已经粘贴了所有可用标签的屏幕截图。