以下文章来源于GoLang全栈 ,作者小锟哥哥
一大早收到粉丝一条私信,项目要用到的包无法安装,咋办?
虽然 go 现在已经有比较好用的 go mod 包管理工具了。
但是由于某些不可描述的原因,在安装依赖时对于新手依旧会有很多问题。
所以今天我就和大家分享些,我个人一般是怎么安装依赖包的。
我们从第一天接触 go 的包依赖开始,你的老师或者看到的资料都是告诉你:直接 go get
。
这是我们最原始的安装方式,它能解决大部分包的依赖问题。
但不是 100% 都能安装成功,比如上面截图里面的包:golang.org/x/crypto/ssh
。
你直接go get
,可能会因为不可描述的原因无法访问到 golang.org 这个网址,自然包就无法安装成功了。
go mod
是 go 1.11 新加的特性。
所以只要你的 go 版本大于 1.11,就自带了 go mod
包管理。
这是一个好东西,如果你开启了 go mod
。
项目里面初始化了 go mod
你再在工程目录下面使用 go get
拉包会自动使用 go mod
拉包,并整理到 go.mod 文件里面。
但是默认他使用的源是国外的,所以安装依赖包一般都很慢,或者不能成功。
所以我们需要设置下他们的代理,让他们从国内的服务器出去,这样速度和稳定性都能更好些。
如果你使用的是 goland 可以 command+,
唤出偏好设置,在里面设置代理:
推荐代理到 https://goproxy.cn 这个上,七牛云家的,我一直使用的它很稳定。
修改好后,记得重新开终端哈!
如果你使用的是其他 IDE 或者命令行,大家自行百度下怎么设置代理吧。
设置完成后使用 go env
能看到当前 go 使用到的环境变量,可以用来检查配置是否 OK。
如果上面两步操作后都还不能安装成功,那么就得使用非正常手段来安装依赖了。
首先我们需要理解 go 本地的包是怎么存放,怎么引用的。
如果是传统的 go get 下载的依赖包会存放在 GOPATH/src/域名/包名
下面。
如果是使用的 go mod 下载的依赖包会存放在 GOPATH/pkg/mod/域名/包名@版本号
下面。
所以我们可以把包手动下载放到对应的目录下面即可。
对于 github 国内并不是完全不能访问,只是可能会比较慢,或者时常打不开,此时你可以碰碰运气,祝你好运。
官方包都可以在这个仓库下面找到:https://github.com/golang
如何安装在每个包的 README.md 里面都会有描述:
The easiest way to install is to run go get -u golang.org/x/net. You can also manually git clone the repository to $GOPATH/src/golang.org/x/net.
大部分的依赖包都能在 github 里面找到对应包。
沿用上一种方案的思路,不是所有人都不能科学上网,你可以寻求你身边能科学上网的朋友,帮你下载包给你。
或者让你同事 go get
后去把 GOPATH/pkg/mod
下面对应的包拷贝给你也行。
能站在巨人的肩膀上也是一种能力。
最后还有一种场景,那就是我知道包名字,也能通过文档拿到一些范例 demo,但是我不知道怎么安装。
你可以直接把代码放到工程里面,然后使用 go tidy
来自动规整我的包依赖。
1、包名就是仓库地址
比如:github.com/gin-gonic/gin
报名大都是代码所在仓库地址,大都是可以直接访问的。
2、包里面的包
依赖包有一个非常好玩的地方,有时我们使用的包是包里面的包。
可能有点绕,但是很好理解。
比如文章开头的:golang.org/x/crypto/ssh
这个包,
他就是 golang.org/x/crypto
下面的包。
所以你直接安装 ssh 包,往往会出现找不到包的情况,所以你就需要往上一级安装。
你还有其他比较好的方案么?欢迎下方留言哇!
你学废了么?
关注@马哥教育微课堂,学习更多IT知识,成就高薪IT人生!
「艾尔登法环」梅琳娜手办开订 立体手办▪
万代「艾尔登法环」白狼战鬼手办开订 立体手办▪
「夏目友人帐」猫咪老师粘土人开订 立体手办▪
「五等分的新娘∬」中野三玖·白无垢版手办开订 立体手办▪
「海贼王」乌索普Q版手办开订 立体手办▪
良笑社「初音未来」新手办开订 立体手办▪
「黑岩射手DAWN FALL」死亡主宰手办开订 立体手办▪
「盾之勇者成名录」菲洛手办登场 立体手办▪
「魔法少女小圆」美树沙耶香手办开订 立体手办▪
「咒术回战」七海建人粘土人登场 立体手办▪
「五等分的新娘」中野二乃白无垢手办开订 立体手办▪
「为美好的世界献上祝福!」芸芸粘土人开订 立体手办▪
「公主连结 与你重逢」六星可可萝手办开订 立体手办▪
「女神异闻录5」Joker雨宫莲手办开订 立体手办▪
「间谍过家家」约尔・福杰粘土人登场 立体手办▪
「街角魔族 2丁目」吉田优子手办开订 立体手办▪
「火影忍者 疾风传」旗木卡卡西·暗部版粘土人登场 立体手办▪
「佐佐木与宫野」宫野由美粘土人开订 立体手办▪
「盾之勇者成名录」第2季拉芙塔莉雅手办开订 立体手办▪
「咒术回战」两面宿傩Q版坐姿手办开订 立体手办▪
「DATE·A·BULLET」时崎狂三手办开订 立体手办▪
「狂赌之渊××」早乙女芽亚里粘土人开订 立体手办▪
「魔道祖师」魏无羨粘土人开订 立体手办▪
「新·奥特曼」奥特曼手办现已开订 立体手办▪