无法构建 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了
我是怎么解决的:
- 通过 运行ning 将
$GOPATH/bin
添加到 PATH
export PATH=$PATH:$GOPATH/bin
- 在
.bash_profile
文件内的 export PATH=$PATH:$GOPATH/bin
行上方添加 export GOPATH=$(go env GOPATH)
。
- 运行
go get -u
再次获取所需的包。
- 运行 您的代码
protoc --go_out=../cloud/ *.proto
。
你应该正确定义你的 GO_PATH
- 你的 go 包在哪里
居住。
换句话说,GO_PATH
是你的 go 工作区。 GO_PATH
应该是 ~/go
.
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,请按照以下说明操作:
- 在此处下载协议文件
https://github.com/protocolbuffers/protobuf/releases/tag/v3.19.4
(在我的案例中,我曾经下载
protoc-3.19.4-linux-x86_64.zip
。
- 解压此文件夹中的文件`/home/your_username/.local
- 那么你会得到这样的:
/home/your_username/.local/bin/protoc
- 利润。这将通过在您的终端中输入“protoc”来工作
enter image description here
我已经安装了protoc 3.20.0。
但是我没有得到为 Golang 生成代码的标签。
我已经粘贴了所有可用标签的屏幕截图。
使用 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了
我是怎么解决的:
- 通过 运行ning 将
$GOPATH/bin
添加到 PATHexport PATH=$PATH:$GOPATH/bin
- 在
.bash_profile
文件内的export PATH=$PATH:$GOPATH/bin
行上方添加export GOPATH=$(go env GOPATH)
。 - 运行
go get -u
再次获取所需的包。 - 运行 您的代码
protoc --go_out=../cloud/ *.proto
。
你应该正确定义你的
GO_PATH
- 你的 go 包在哪里 居住。 换句话说,GO_PATH
是你的 go 工作区。GO_PATH
应该是~/go
.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,请按照以下说明操作:
- 在此处下载协议文件
https://github.com/protocolbuffers/protobuf/releases/tag/v3.19.4
(在我的案例中,我曾经下载
protoc-3.19.4-linux-x86_64.zip
。 - 解压此文件夹中的文件`/home/your_username/.local
- 那么你会得到这样的:
/home/your_username/.local/bin/protoc
- 利润。这将通过在您的终端中输入“protoc”来工作
enter image description here
我已经安装了protoc 3.20.0。 但是我没有得到为 Golang 生成代码的标签。 我已经粘贴了所有可用标签的屏幕截图。