golang的 GOPATH和vendor的搜索关系

golang的 GOPATH和vendor的搜索关系,第1张

golang的 GOPATH和vendor的搜索关系

项目只有一个包,即main包,没有引用其他的包(golang自带的系统包除外)。

然后设置GOPATH=path/to/<goproject>,再运行go build myproject,这样就可以在任何目录下面编译,编译生成的可执行文件就在编译所在的目录下,而不是包源文件所在的目录。

基本规则:

鉴于此,建议golang项目必须严格按照规范的目录结构组织,哪怕是前面这种自包含的项目。

基本规则:

如果一个包在vendor和GOPATH下面都存在那么谁会优先使用呢。

结论是:

包mydeps在vendor目录下面和GOPATH路径下面都存在了,那么main.go引用的时候只会引用vendor下面的mydeps(src/myproject/vendor/mydeps),而忽略GOPATH下面的mydeps包(src/mydeps)。

前面提到GOPATH和PATH类似,可以包含多个路径,中间用分号隔开,go在搜索包的时候会按手续从前往后搜搜。那么vendor怎么处理层级关系呢。

规则是:

举例:

如果src/mydep/mydep1/mydep.go引用了myvendor1和myvendor,那是怎么搜索的呢

liteidegobuild报错找不到指定的模块,可能是因为您的Go项目中缺少了某些依赖的模块,或者是模块路径不正确导致的。解决方法:

1、确认GOPATH设置正确:在使用liteidegobuild命令之前,需要确保您的GOPATH环境变量已经正确设置。可以在终端中输入echo$GOPATH来确认GOPATH是否已经设置。

2、更新依赖模块:使用Go的依赖管理工具gomod来更新项目中的依赖模块。在项目根目录下,使用命令gomodtidy来检查并更新依赖模块,然后再次尝试使用liteidegobuild命令。

3、确认模块路径:检查项目中使用的模块路径是否正确。如果您在代码中使用了自定义的模块路径,需要确保其正确性。可以使用gomodverify命令来检查项目中的模块路径是否正确。

4、清除缓存:有时候,Go项目中的缓存可能会导致一些问题。可以尝试清除GOPATH和GOROOT目录下的缓存。在终端中输入以下命令来清除缓存。

使用gvm在~/.bash_profile里面添加一下文本时GOROOT和GOPATH需要在之后设置才有效[估摸着是被覆盖了]

修改之后执行下source, 即可生效


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11015467.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存