英文:
Cannot find package "google/protobuf"
问题
我正在编译一个用Go语言编写的开源项目(openblockchain)。当我执行go build
时,出现以下错误。有人可以帮我解决这个问题吗?
编译错误
> go build
../go/src/github.com/openblockchain/obc-peer/openchain/util/utils.go:28:2: 找不到包“google/protobuf”,可能的位置有:
/usr/src/pkg/google/protobuf(来自$GOROOT)
/home/vichu/go/src/google/protobuf(来自$GOPATH)
附加信息
我在Stack Overflow上参考了这里的问题,但仍然没有解决这个问题。以下是我拥有的一些更多信息:
Protoc版本是最新的。
> protoc --version
libprotoc 3.0.0
我的环境变量
> echo $GOPATH
/home/vichu/go
> echo $GOBIN
/home/vichu/go/bin
Protobuf已经使用README构建。
~/go/src/github.com/golang/protobuf$ ls
AUTHORS CONTRIBUTORS jsonpb LICENSE Makefile Make.protobuf proto protoc-gen-go proto.pb.go ptypes README.md
更新
我按照答案中提到的,在源代码的Util.go
中进行了以下更改。
源代码是开源的,这是链接
- gp "google/protobuf"
+ gp "github.com/google/protobuf"
当我执行go get
时,出现以下错误
> go get github.com/google/protobuf
无法加载包:包github.com/google/protobuf中没有可构建的Go源文件,位于/home/vichu/go/src/github.com/google/protobuf
英文:
I am compiling an open source project written in go (openblockchain). I get the following error when I do go build
. Can anyone help me with this issue
Compilation Error
> go build
../go/src/github.com/openblockchain/obc-peer/openchain/util/utils.go:28:2: cannot find package "google/protobuf" in any of:
/usr/src/pkg/google/protobuf (from $GOROOT)
/home/vichu/go/src/google/protobuf (from $GOPATH)
Additional Information
I referred the question here in Stack Overflow but still no luck in solving the issue. Here is some more information about what all I have:
Protoc version is up to date.
> protoc --version
libprotoc 3.0.0
My environment variables
> echo $GOPATH
/home/vichu/go
> echo $GOBIN
/home/vichu/go/bin
Protobuf has been built using the README.
~/go/src/github.com/golang/protobuf$ ls
AUTHORS CONTRIBUTORS jsonpb LICENSE Makefile Make.protobuf proto protoc-gen-go proto.pb.go ptypes README.md
Update
I did the following Util.go
in source code as mentioned in answer.
The source code is open source and here is the link
- gp "google/protobuf"
+ gp "github.com/google/protobuf"
When I do go get
, the below is the error
> go get github.com/google/protobuf
can't load package: package github.com/google/protobuf: no buildable Go source files in /home/vichu/go/src/github.com/google/protobuf
答案1
得分: 4
首先,你的导入语句是错误的,你试图导入一个 C++ 包,而不是一个 Golang 包。正确的导入语句应该是:
import "github.com/golang/protobuf/proto"
如果你还没有安装这个包,你需要在命令行中运行以下命令来安装:
go get github.com/golang/protobuf/proto
英文:
Firstly, your import is wrong, you are trying to import a C++ package, not a golang package. It needs to be:
import ("github.com/golang/protobuf/proto")
If you don't have this package installed already, you need to run from command line:
go get github.com/golang/protobuf/proto
答案2
得分: 0
我认为,在您的*.pb.go文件的末尾,您也没有类似于"gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00 ...."的内容。
问题是我们使用了错误的编译器进行生成。
所以:
1)我重新安装了protobuf,下载链接为:
https://github.com/google/protobuf/releases
2)然后(我使用的是Ubuntu,它也有一个proto编译器):
apt remove protobuf-compiler
重新构建*.proto文件。这样可以修复该错误。
英文:
I think, at the end of your *.pb.go file you also do not have some thing like "gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00 ...."
The issue is we use a wrong compiler for generating.
So:
-
I reinstall protobuf from:
https://github.com/google/protobuf/releases -
Then (I'm using ubuntu and it has a proto compiler also):
apt remove protobuf-compiler
Rebuild the *.proto file. It fixed the bug.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论