go引入自建包编译报错:main.go:5:2: package src/xxx is not in std
【问题描述】
在go语言的build编辑过程中:go build main.go
报了下面的错误信息:
main.go:5:2: package src/gocode/testproject01/unit2/demo17/test is not in std (D:\Program Files\Go\src\src\gocode\testproject01\unit2\demo17\test)
下面是编辑的main.go文件内容:
顺便说一下,我已经在系统的环境变量中设置了GOPATH的变量和正确的路径值:
奇怪的是,只要编译main.go文件,就会报上面的错误信息。
【原因分析】
再怎么分析也不太知道是什么原因导致的,因为GOPATH 和GOROOT的路径都是设置正确的,百度了解了一下,如果环境变量和引用的路径配置都是正确的,build还是报这个错误,很可能是因为go的环境变量本身的配置出现了问题。使用go env命令,查看一下go本身的环境变量配置如下:
根据go的配置信息发现,问题可能出现在GO111MODULE的开启和关闭上。
1)当GO111MODULE=空时,它将清除GO111MODULE环境变量的设置,这将导致Go工具认为你的项目不会使用Go Modules,因此它会尝试在GOPATH中查找包,但无法查找到你在项目中的非标注库的包;
2)当GO111MODULE=off时,这意味着你禁用了Go Modules,并且Go工具会尝试在GOPATH中查找包。
【解决方案】
修改GO111MODULE配置:go env -w GO111MODULE=off
再次编译或运行main.go文件,就不会报错了。
备注:GO111MODULE是go mudules的功能开关,简要说明:
GO111MODULE=off,go命令将不会支持mudules功能,寻找依赖包的方式会沿用旧版本的那种通过vendor目录或者GOPATH模式来查找;
GO111MODULE=on,go命令会使用mudules功能,而完全不会去GOPATH目录下查找。
参考的文章链接:https://blog.csdn.net/qq_50750196/article/details/134261664
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix