• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Go/golang:解决依赖包模块安装问题

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Go的发展迅猛向前,现在建议学习更加先进的 go module,本文依然具有参考价值

 

                          ----2022.5.4 于深圳

 

Go对于初学有2大问题:

1 是依赖的安装 

2 gopath内的目录结构的处理,因为go依赖的路径问题,绝对相对路径,所以这点要很小心处理

 

最近在学习Go编写后端服务,先放出谢大的书镇楼:

https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/preface.md

学习Go的人,第一个要解决的问题,就是安装依赖,也就是我们用的go get命令,由于你懂得原因,Go安装依赖总是timeout(获取超时),就算挂公司的vpn也不行,说个实在话:golang官网都上不去你还想安装依赖??

国内网络是可以访问github.com的,那么用github.com代替golang.org呢?举个栗子:

go get github.com/micro/micro

我敢保证,不是每次都行得通,有时也timeout,为啥,因为我试过!

后来我去看了这篇文章还有其他文章,结合谢大的书,总结了两个个解决方案:

https://www.imooc.com/article/45820

方案一:gopm,缺点:慢!优点:自动!

方案二:github.com clone(或者网页下载)+ src +go install

先跟大家说个知识:

1.会涉及go path和go get的原理,这个自己去看谢大的书,例如我的电脑是mac mini,那么我的默认go工作目录就是:/users/用户名/go,其他不多说

2.我们的依赖通常放在 go/src里 (这里的go就是上一行的go路径,下同),我们进到这个目录里,在有.go文件的地方,执行go install ,golang就会把src的 .go 编译成包文件 .a文件,放到同等目录的go/src中,就是把包文件的目录放得跟src的一样,只是src改为pkg

3.代码

import (
    "github.com/micro/go-micro"
)

上面的不要以为是会去github.com下载依赖,如果是的话我们还有手动go get获取依赖干嘛?

好,下面拿我上面要安装的依赖来试试

go get github.com/micro/micro

我们全程都不必用到 go get 

1.去github找到micro的仓库,下载micro,注意放到 go/src/github.com/micro  (注意,因为下载的micro里还有个叫micro的文件夹,所以名字会叫micro/micro)

2.去到micro 里执行install,不同机器报错不同,例如我的机器缺少的文件数量比较少,结果如下:

我是用vscode哈

好的,这时我们看得出缺了crypto的包,并且是src的而不是pkg的,因此只需要下载源码放到src就好,而不用go install,那我们就愉快的去github.com下载它的源码吧!

 

怎么找?

 

github搜索 crypto

把里面整个下载下来,迅雷下载可以提速,放到src对应路径(一般github的路径如下:github.com/作者github名/仓库名/具体go文件),需要包时执行install,这个过程要重复几次,直到收到下完所有的包

 

 

顺便提一句,由于包依赖太多,楼主已吐血

 

2019.04.03更新

最近我探索到一种方式,不用开vpn的

首先看问题,如果少源码,也就是第1.个,就Github找源码下载放到src相应的目录中,如果少包,也就是第2.个,不但要下载源码放到src中,还要去到相应目录执行go install,但是这样效率吐血,因为通常a依赖b,b依赖c,c依赖e f g......翻桌子啊!!!

如何解决,就是直接到 项目的根目录里 先执行go get,效果和nodejs 执行npm install差不多,完了后,get不了的包(一般github都get得下来,就是golang.org或者google网站的包或者说源码get不下来,那么你就去github搜索包在github的镜像,手动下载按照前面说的做,放到相应目录,需要时执行go install,这样最快,gopm慢到吐血)

1.

cannot find package "github.com/..." in any of:
        E:\Go\src\github.com...

2.

cannot find package "github.com/..." in any of:
        K:\go\pkg\github.com\...

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go语言能否取代JAVA,成为下一个王者?发布时间:2022-07-10
下一篇:
goland 创建工程(go mod)singo发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap