相关文章推荐
幸福的墨镜  ·  macbook python ...·  1 月前    · 
近视的金鱼  ·  从applescript调用“打开”时错误代 ...·  1 月前    · 
面冷心慈的人字拖  ·  qBittorrent软件下载和安装教程(附 ...·  1 月前    · 
英勇无比的筷子  ·  PySide6 GUI ...·  1 月前    · 
冲动的梨子  ·  SpringBoot如何正确接收FormDa ...·  1 周前    · 
玩命的豌豆  ·  WebAssembly ...·  2 年前    · 
痴情的凉面  ·  处理文件名内含有特殊字符的文件_hem的博客 ...·  2 年前    · 
Code  ›  Go path自定义项目路径包依赖的问题开发者社区
软件
https://cloud.tencent.com/developer/article/1813374
不羁的生姜
2 年前
作者头像
恒恒
0 篇文章

Go path自定义项目路径包依赖的问题

原创
前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > 恒恒的专栏 > Go path自定义项目路径包依赖的问题

Go path自定义项目路径包依赖的问题

原创
作者头像
恒恒
修改 于 2021-04-21 17:09:40
3.4K 0
修改 于 2021-04-21 17:09:40
举报

go的项目现在基本全是go module模式,快捷方便的包依赖和版本管理,但有时候碰到一些老项目需要维护,依然是go path模式,这种古老的模式对一些新学者可能一知半解就直接选择了go module,对老学者可能早已被遗忘,由此记录一下。

一、全局环境路径介绍

GOROOT=C:/go

1、goroot/src下是go本身的包。

2、go mod模式下,gopath/pkg/mod/找不到的包也会从root/src路径查找

3、go path模式下,gopath/src/里面不存在的包也会从root/src路径查找

GOPATH=E:/go

1、无论go mod 还是gopath模式,此目录需有。

2、若是go mod模式,第三方依赖包会在此目录下./pkg/mod下,如下图:

3、若是go path模式,第三方依赖包会在此目录下./src下,如下图:

二、go path模式下的项目布署

go mod的代码可以随意安放,这是相对gopath一个方便的地方,无论项目代码放在哪里,依赖的包都如上所说,都在gopath/pkg/mod下,是绝对路径包含。

但go path的一般说法,gopath的项目代码,需要放在gopath/src目录下,它是对gopth/src的相对包含,这里会引出一个问题,如果我有两个项目,都有lib的包,如果代码都丢在gopath/src目录下,代码不是混在一起了吗?

显然解决方法是有的,如下,我想把项目放在随便一个目录E:/marketwork下,终端执行git clone xxxx src,将git代码clone下来到该目录的src目录下(src不用手动创建)

1、解决项目本身的包依赖问题:

完了会发现本地包含的包有问题,因为都从全局的gopath/src去包含了,而你的代码不在gopath/src下。

如何解决?以golang为例,设置项目的go path即可,如下图:

2、解决github包依赖问题:

设置好后,本地包含问题已解决,项目本身包含已经是绿色,重新打开ide的terminal,run一下发现第三方github的依赖包有问题

这个时候,如果你直接在该终端下执行go get github.com/xxxxxxx,会发现包下载在当前目录下了,这会有什么问题呢?对本项目是没有问题的,因为上面图看出, 设置了项目的gopath,它在全局的gopath和goroot找不到的包,最终还会到项目的gopath去找这个包。

但这样会造成包文件的重复冗余,因为github上的包,很多项目本来可能是共用的,每个项目自己目录下一份没必要。而且下到全局的gopath/src下,以后别的项目用到,就直接能查找到,就不会再下载了,那如何把github上的包下到全局的gopath/src呢?

其实很简单,另外开一个终端,将当前终端的gopath环境变更设置为只有全局的,再go get xxxx,就是下载到全局的gopath/src下, 所以在gopath模式下,go get 下载的包在什么目录,取决于当前终端设置的go环境变量GOPATH的目录是什么。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

go

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

go
评论
登录 后参与评论
0 条评论
热度
最新
登录 后参与评论
关于作者
恒恒
0
文章
0
累计阅读量
0
获赞
前往专栏
目录
  • 一、全局环境路径介绍
  • 二、go path模式下的项目布署
    • 1、解决项目本身的包依赖问题:
      • 2、解决github包依赖问题:
领券
  • 社区

    • 专栏文章
    • 阅读清单
    • 互动问答
    • 技术沙龙
    • 技术视频
    • 团队主页
    • 腾讯云TI平台
  • 活动

    • 自媒体分享计划
    • 邀请作者入驻
    • 自荐上首页
    • 技术竞赛
  • 资源

    • 技术周刊
    • 社区标签
    • 开发者手册
    • 开发者实验室
  • 关于

    • 社区规范
    • 免责声明
    • 联系我们
    • 友情链接

腾讯云开发者

扫码关注腾讯云开发者

扫码关注腾讯云开发者

领取腾讯云代金券

热门产品

  • 域名注册
  • 云服务器
  • 区块链服务
  • 消息队列
  • 网络加速
  • 云数据库
  • 域名解析
  • 云存储
  • 视频直播

热门推荐

  • 人脸识别
  • 腾讯会议
  • 企业云
  • CDN加速
  • 视频通话
  • 图像分析
  • MySQL 数据库
  • SSL 证书
  • 语音识别

更多推荐

  • 数据安全
  • 负载均衡
  • 短信
  • 文字识别
  • 云点播
  • 商标注册
  • 小程序开发
  • 网站监控
  • 数据迁移

Copyright © 2013 - 2023 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有

深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569

腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287

问题归档 专栏文章 快讯文章归档 关键词归档 开发者手册归档 开发者手册 Section 归档

Copyright © 2013 - 2023 Tencent Cloud.

All Rights Reserved. 腾讯云 版权所有

登录 后参与评论
 
推荐文章
幸福的墨镜  ·  macbook python 控制手机app_使用appscript+python来控制Mac下的GUI应用程序
1 月前
近视的金鱼  ·  从applescript调用“打开”时错误代码-10810开发者社区
1 月前
面冷心慈的人字拖  ·  qBittorrent软件下载和安装教程(附下载链接,适合新手) - C语言中文网
1 月前
英勇无比的筷子  ·  PySide6 GUI 编程(2):窗口设置与基础控件开发者社区
1 月前
冲动的梨子  ·  SpringBoot如何正确接收FormData多文件上传?_编程语言-CSDN问答
1 周前
玩命的豌豆  ·  WebAssembly 在抖音烟花特效中的应用 - 知乎
2 年前
痴情的凉面  ·  处理文件名内含有特殊字符的文件_hem的博客-CSDN博客
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号