【问题标题】:cannot find package "google.golang.org/protobuf/cmd/protoc-gen-go"找不到包“google.golang.org/protobuf/cmd/protoc-gen-go”
【发布时间】:2020-06-04 08:55:05
【问题描述】:

页面Protocol Buffer Basics: Go 说了两件事: 1) 下载软件包并按照自述文件中的说明进行操作 2) 运行 go install google.golang.org/protobuf/cmd/protoc-gen-go 在Download Protocol Buffers 之后指向release page,它有许多语言(C++、C#、...)的 tar 和 zip 文件,但没有 Go。文件 protobuf-all-3.12.3.tar.gz 有多种语言,但没有 Go。 README 中提到 Go,前往 Go support for Protocol Buffers,上面说它已被 module google.golang.org/protobuf 取代。当我到达那里时,没有任何安装说明,只是指向更多页面的更一般的东西。所以我尝试了步骤(2)

go install google.golang.org/protobuf/cmd/protoc-gen-go

得到了

can't load package: package google.golang.org/protobuf/cmd/protoc-gen-go: cannot find package "google.golang.org/protobuf/cmd/protoc-gen-go" in any of ...

我在浏览器上打开了 9 个选项卡,指向不同的 Golang 协议缓冲区页面,但我仍然没有成功。我已经下载了 protoc 并让它在 Java 和 Python 上运行良好,但是安装 Go 让我到目前为止已经被打败了。是否有一个页面以简单的方式告诉我该怎么做?曾几何时,使用 Github 存储库很容易,但那是很久以前的事了…… 谢谢,简

【问题讨论】:

    标签: go protocol-buffers


    【解决方案1】:

    跑步

    go get -u google.golang.org/protobuf/cmd/protoc-gen-go
    

    first before go install 好像已经解决了。

    【讨论】:

    • 不带参数 -u 运行函数会更安全,因为运行“go get -u ...”可能会产生不需要的结果,尤其是对于像我这样最近开始使用 golang 及其工具链。当您将 -u 选项与 go get 命令一起使用时,它会应用最小版本选择来将传递依赖项也升级到其最新版本。
    【解决方案2】:

    确保你有一个go.mod:

    go mod init github.com/org/repo
    

    【讨论】:

      【解决方案3】:

      您是否尝试过使用以下命令安装二进制文件:

      go install github.com/golang/protobuf/protoc-gen-go
      

      如果您正在寻找特定版本,请尝试:

      go install github.com/golang/protobuf/protoc-gen-go@v1.3
      

      注意:请确保在运行上述命令之前设置 GOBIN

      谢谢

      【讨论】:

      • 是的,但我的理解是 github 包已被弃用:github.com/golang/protobuf 页面上的“它已被 google.golang.org/protobuf 模块取代”
      【解决方案4】:
      1. 下载protoc 所需操作系统的二进制文件:github.com => protobuf => releases
      2. protoc 添加到$PATH
      3. 安装protoc-gen-go$GOBIN:
      user ~ % go install github.com/golang/protobuf/protoc-gen-go
      go: finding github.com/golang/protobuf/protoc-gen-go latest
      go: downloading google.golang.org/protobuf v1.23.0
      go: extracting google.golang.org/protobuf v1.23.0
      go: finding google.golang.org/protobuf v1.23.0
      

      注意:具体版本添加@v + version

      注意:Go自动安装protoc-gen-go二进制到$GOBIN,如果$GOBIN没有设置,则等于$GOPATH/bin

      【讨论】:

        【解决方案5】:

        看到这个。 https://developers.google.com/protocol-buffers/docs/reference/go-generated

        您需要 1.16 或更高版本。检查一下。

        【讨论】:

          【解决方案6】:

          正如@jeremyko 的评论中所指出的,您需要 Go 1.16 或更高版本。我个人从 APT 存储库安装了 Go,该存储库通常包含过时的软件包。它安装了 1.13,所以我在安装 OpenSnitch 时遇到了问题。

          您可以从here下载最新版本。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-02-25
            • 2020-08-05
            • 2020-01-02
            • 2023-03-12
            • 1970-01-01
            • 2022-08-16
            • 2019-05-03
            • 2022-06-14
            相关资源
            最近更新 更多