微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

go build 不在 $GOPATH

如何解决go build 不在 $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 文件。

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

就您而言,migrate to go modules 会更容易,即使将 GO111MODULE 设置为 auto 可能会有所帮助。

如评论所述,您的 go.mod 的第一行应该是:

module myProject

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。