go.mod方式下gopm get安装成功,import之后还是报错的解决办法

更新

下载之前更新一下源就没那么多事了

go env -w GOPROXY=https://goproxy.cn,direct

————————————————————————————————————————————

版本

go 1.13

过程

一开始直接go go get gopkg.in/gomail.v2时提示:

go get gopkg.in/gomail.v2: module gopkg.in/gomail.v2: Get 
https://proxy.golang.org/gopkg.in/gomail.v2/@v/list: dial tcp 216.58.200.49:443: 
connectex: A connection attempt failed because the connected party did not 
properly respond after a period of time, or established connection failed because
 connected host has failed to respond.

后面直接用gopm get -g gopkg.in/gomail.v2,安装成功了,自动安装到/$GOPATH/src/gopkg.in下,因为项目用的是go.mod的方式,就把包复制到了 $GOPATH/pkg/mod/gopkg.in下,然后再项目里 直接 import "gopkg.in/gomail.v2"
结果也找到包了,但是还是下载失败

go: finding gopkg.in/gomail.v2 latest
go: downloading gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
verifying gopkg.in/gomail.v2@v2.0.0-20160411212932-81ebce5c23df: 
gopkg.in/gomail.v2@v2.0.0-20160411212932-81ebce5c23df: Get 
https://sum.golang.org/lookup/gopkg.in/gomail.v2@v2.0.0-20160411212932-
81ebce5c23df: dial tcp 172.217.24.17:443: connectex: A connection attempt 
failed because the connected party did not properly respond after a period of 
time, or established connection failed because connected host has failed to 
respond.

解决方案

后来才知道, go 1.13之后默认会用sum校验,就是go.sum,由于刚刚下载的包虽然下载成功了,但是目录名是gomail.v2,所以module还是认为在你这里找不到包,于是会自动去下载,后面的就清除了,因为大陆访问不了gopkg.in,所以下载失败。。

现在只需要将 GOPROXY设置一下就好了

go env -w GOPROXY=https://goproxy.cn 

然后运行项目

go run ./main.go
go: finding gopkg.in/gomail.v2 latest                      
go: downloading gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
go: extracting gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df

成功,然后可以看到go.sum添加了如下信息

gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df h1:n7WqCuqOuCbNr617RXOY0AWRXxgwEyPp2z+p0+hgMuE=
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw=

总结

有时候gopm get下载下来之后,发生上面的情况,可以按照报错的提示,将目录名修改一下就可以了,例如 提示 verifying gopkg.in/gomail.v2@v2.0.0-20160411212932-81ebce5c23df:,直接把刚刚gopm安装的包名改一下gomail.v2@v2.0.0-20160411212932-81ebce5c23df:就可以了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Go语言中,安装第三方包需要下载、引入和版本管理。你可以使用以下步骤来安装第三方包: 1. 首先,在命令行中使用`go get`命令下载第三方包。例如,如果要安装github.com/gin-gonic/gin包,可以运行以下命令:`go get github.com/gin-gonic/gin***出一个pkg文件夹,其中包含你安装的包。 3. 如果你无法直接在网络上安装包,你可以选择离线安装的方法。首先,你需要到对应的第三方包的GitHub页面(例如https://github.com/gpmgo/gopm)下载源码压缩文件。 4. 将下载的源码压缩文件解压到对应的文件夹,并按照相应的目录结构进行构建。 5. 对于手动安装,你可以使用`go install`命令来安装包。例如,如果要安装github.com/gpmgo/gopm包,可以运行以下命令:`go install github.com/gpmgo/gopm`。 需要注意的是,Go语言对于导入的包有一定的规范。所有import的包必须在%GOPATH路径下,如果直接导入源码路径下的包,编译会报错。因此,如果新加入的第三方包与工程目录脱离,你需要在使用或编译之前将第三方包所在的目录加入到$GOPATH中。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [go语言 第三方包安装方法_【分享吧】Go语言第三方包的使用介绍与场景应用](https://blog.csdn.net/weixin_39760650/article/details/110134234)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Golang中第三方包安装方法-git](https://blog.csdn.net/yycoolsam/article/details/106194192)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值