go build 不看 $GOPATH

go build not looking in $GOPATH

我设置了 $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 % 

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

More precisely, the GO111MODULE environment variable now defaults to on. To switch to the previous behavior, set GO111MODULE to auto.

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

根据评论,您的 go.mod 的第一行应该是:

module myProject

你的另一个“otelkafkago”项目,它应该有自己的 go.modmodule otelkafkago 作为第一行,并首先构建。