【问题标题】:go build not looking in $GOPATHgo build 不在 $GOPATH 中查找
【发布时间】:2021-04-20 05:27:09
【问题描述】:

我已经设置了 $GOPATH,并导入了我在 $GOPATH/src 中的部分源代码。

我需要导入的包是我写的,存放在GOPATH/src 我把它命名为 otelkafkago,它的路径是 GOPATH/src/otelkafkago

我的硬盘上的其他地方还有一个代码库,当我尝试编译它时,它给了我

main.go:51:2: package otelkafkago is not in GOROOT (/usr/local/go/src/otelkafkago)

我已将其导入为

import(
    "otelkafkago"
)

以下是我在构建过程中的屏幕截图,

kshitijpatil@PNQ-KPATIL checkoutservice % echo $GOPATH
/Users/kshitijpatil/go/
kshitijpatil@PNQ-KPATIL checkoutservice % go build
main.go:51:2: package otelkafkago is not in GOROOT (/usr/local/go/src/otelkafkago)
kshitijpatil@PNQ-KPATIL checkoutservice % env GOPATH=/Users/kshitijpatil/go go build
main.go:51:2: package otelkafkago is not in GOROOT (/usr/local/go/src/otelkafkago)
kshitijpatil@PNQ-KPATIL checkoutservice % 

【问题讨论】:

  • GOPATH 构建已弃用,使用 Go 模块。
  • 我已经把我的依赖作为一个 go mod

标签: go import build gopath


【解决方案1】:

Since Go 1.16,无论当前工作目录还是父目录中是否存在go.mod文件,默认开启模块感知模式。

更准确地说,GO111MODULE 环境变量现在默认为on。要切换到之前的行为,请将GO111MODULE 设置为auto

在您的情况下,migrate to go modules 会更容易,即使将 GO111MODULE 设置为 auto 可能会有所帮助。

正如评论,go.mod 的第一行应该是:

module myProject

你的另一个“otelkafkago”项目,它应该有自己的go.mod,第一行是module otelkafkago,并且首先被构建。

【讨论】:

  • 得到以下输出:使用 GO111MODULE=auto go build main.go:48:2: package otelkafkago is not in GOROOT (/usr/local/go/src/otelkafkago)
  • @KshitijPatil 我是这么想的:做一个go mod init myProjectgo build 会起作用。
  • @KshitijPatil 但是如果你已经有一个 go.mod,试试go mod tidy + go mod verify
  • 你能分享你的 .mod 文件的第一行吗
猜你喜欢
  • 2014-03-24
  • 1970-01-01
  • 2014-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-10
  • 1970-01-01
相关资源
最近更新 更多