登录
首页 >  Golang >  Go问答

编译时不依赖于 $GOPATH

来源:stackoverflow

时间:2024-03-09 12:18:25 106浏览 收藏

大家好,我们又见面了啊~本文《编译时不依赖于 $GOPATH》的内容中将会涉及到等等。如果你正在学习Golang相关知识,欢迎关注我,以后会给大家带来更多Golang相关文章,希望我们能一起进步!下面就开始本文的正式内容~

问题内容

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

就您而言,尽管将 go111module 设置为 auto 可能会有所帮助,但 migrate to go modules 会更容易。

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

module myProject

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

今天关于《编译时不依赖于 $GOPATH》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>