


go grpc:无法导入github.com/golang/protobuf/proto(没有必需的模块提供包'github.com/golang/protobuf/proto”)
php小编子墨在使用go grpc时遇到了一个错误,提示无法导入"github.com/golang/protobuf/proto"模块。这个错误通常是因为缺少必需的模块导致的。在使用go grpc之前,我们需要确保已经正确安装了protobuf库,并在代码中正确导入了相关的proto包。接下来,我将为大家详细介绍如何解决这个问题。
问题内容
当“protoc --proto_path=proto proto/*.proto --go_out=plugins”时,proto 文件正在导入“github.com/golang/protobuf/proto”而不是“google.golang.org/protobuf/proto” =grpc:pb"命令
导入文件
import ( fmt "fmt" proto "github.com/golang/protobuf/proto" math "math" ) ... > This is a compile-time assertion to ensure that this generated file // is compatible with the proto package it is being compiled against. // A compilation error at this line likely means your copy of the // proto package needs to be updated. const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
我的原型文件
syntax="proto3"; message Processor{ string name=1; uint32 cores=2; uint32 min_ghz=3; uint32 max_ghz=4; }
~go/bin/protoc-gen-go-grpc 有版本
go: downloading google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 go: downloading google.golang.org/grpc v1.58.2 go: downloading google.golang.org/protobuf v1.28.1
我做了什么
初始安装
$ go install google.golang.org/protobuf/cmd/[电子邮件受保护]
$ go install google.golang.org/grpc/cmd/[电子邮件受保护]
在安装新软件包之前输入go clean -modcache,并使用注释@latest重新安装最新版本
go 版本:Ubuntu 20.4 上的 go 版本 go1.21.1 linux/amd64
协议--版本 libprotoc 3.6.1
使用 apt 安装了 protobuf-compiler 和 golang-goprotobuf
sudo apt install protobuf-compiler sudo apt install golang-goprotobuf -dev export PATH="$PATH:$(go env GOPATH)/bin"
我觉得问题就在这里,但我不知道要修复什么或如何阅读此内容
go mod graph | grep github.com/golang/protobuf example-first github.com/golang/[email protected] github.com/golang/[email protected] github.com/google/[email protected] github.com/golang/[email protected] google.golang.org/[email protected] google.golang.org/[email protected] github.com/golang/[email protected] google.golang.org/[email protected] github.com/golang/[email protected] github.com/golang/[email protected] github.com/google/[email protected] github.com/golang/[email protected] google.golang.org/[email protected] go mod why github.com/golang/protobuf go: downloading github.com/golang/protobuf v1.5.3 go: downloading github.com/google/go-cmp v0.5.5 go: downloading golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 # github.com/golang/protobuf (main module does not need package github.com/golang/protobuf)
编辑:我想我最初使用 go get -u github.com/golang/protobuf/proto 安装了它,但我使用 rm -rf $(go env GOPATH)/pkg/mod/github.com/golang 删除了二进制文件/protobuf/proto 并使用 go install google.golang.org/protobuf/cmd/protoc-gen-go@latest 安装新版本并 go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@最新的。它仍然使用旧导入生成 go 文件
Edit2:找不到 protoc-gen-go --version,但 protoc-gen-go-grpc --version 是 1.2.0。 protoc --版本是 libprotoc 3.6.1 whereis 协议-gen-go protoc-gen-go:/usr/bin/protoc-gen-go /home/hp/go/bin/protoc-gen-go /usr/share/man/man1/protoc-gen-go.1.gz p>
解决方法
正如https://www.php.cn/link/a5481cd6d7517aa3fc6476dc7d9019ab 作者:@puellanivis
Linux 环境中的 $PATH
变量应以 /home/{username}/go/bin
开头,然后按顺序以 /usr/bin
开头。这是因为我们需要在 /usr/bin/protoc-gen-go
之前找到 google.golang.org/gprc/cmd/protoc-gen-go-grpc@latest
。
编辑 ~/.bashrc
或 ~/.bash_profile
文件 ($vim ~/.bashrc
) 并手动导出整个路径环境。就我而言,我必须添加
export PATH=/home/hp/go/bin:/usr/local/go:/home/hp/go:usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
以上是go grpc:无法导入github.com/golang/protobuf/proto(没有必需的模块提供包'github.com/golang/protobuf/proto”)的详细内容。更多信息请关注PHP中文网其他相关文章!

C 更适合需要直接控制硬件资源和高性能优化的场景,而Golang更适合需要快速开发和高并发处理的场景。1.C 的优势在于其接近硬件的特性和高度的优化能力,适合游戏开发等高性能需求。2.Golang的优势在于其简洁的语法和天然的并发支持,适合高并发服务开发。

Golang在实际应用中表现出色,以简洁、高效和并发性着称。 1)通过Goroutines和Channels实现并发编程,2)利用接口和多态编写灵活代码,3)使用net/http包简化网络编程,4)构建高效并发爬虫,5)通过工具和最佳实践进行调试和优化。

Go语言的核心特性包括垃圾回收、静态链接和并发支持。1.Go语言的并发模型通过goroutine和channel实现高效并发编程。2.接口和多态性通过实现接口方法,使得不同类型可以统一处理。3.基本用法展示了函数定义和调用的高效性。4.高级用法中,切片提供了动态调整大小的强大功能。5.常见错误如竞态条件可以通过gotest-race检测并解决。6.性能优化通过sync.Pool重用对象,减少垃圾回收压力。

Go语言在构建高效且可扩展的系统中表现出色,其优势包括:1.高性能:编译成机器码,运行速度快;2.并发编程:通过goroutines和channels简化多任务处理;3.简洁性:语法简洁,降低学习和维护成本;4.跨平台:支持跨平台编译,方便部署。

关于SQL查询结果排序的疑惑学习SQL的过程中,常常会遇到一些令人困惑的问题。最近,笔者在阅读《MICK-SQL基础�...

golang ...

Go语言中如何对比并处理三个结构体在Go语言编程中,有时需要对比两个结构体的差异,并将这些差异应用到第�...


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

Dreamweaver Mac版
视觉化网页开发工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具