为了账号安全,请及时绑定邮箱和手机立即绑定

从同一文件系统中的不同存储库导入 Go 模块

从同一文件系统中的不同存储库导入 Go 模块

Go
慕的地6264312 2022-06-01 16:02:19
我有两个独立的 Go 存储库。一个包含应用程序,另一个包含应用程序想要使用的共享库。两者都不在 $GOPATH 中。~/projects/├── myapplication│   ├── go.mod│   └── myapplication.go└── mylibrary    ├── go.mod    └── mylibrary.go图书馆/go.modmodule example.com/mylibrarygo 1.14图书馆/mylibrary.gopackage mylibraryvar Message = "Hello, World!"我的应用程序/go.modmodule example.com/myapplicationgo 1.14myapplication/myapplication.gopackage myapplicationimport (    "fmt"    "example.com/mylibrary")func main() {    fmt.Println(mylibrary.Message)}我没有理由相信上述内容应该有效,因为应用程序无法找出库的位置。我如何能?我已经尝试了以下结果。添加~/projects/mylibrary到 GOPATHgo install为图书馆而奔跑运行go build应用程序给出:myapplication $ go buildgo: finding module for package example.com/mylibrarymyapplication.go:5:2: cannot find module providing package example.com/mylibrary: unrecognized import path "example.com/mylibrary": reading https://example.com/mylibrary?go-get=1: 404 Not Found我可以看到它正在访问 example.com 以查找存储库(可以理解)。但是我怎么能告诉它首先在本地寻找某个地方呢?
查看完整描述

2 回答

?
杨魅力

TA贡献1811条经验 获得超6个赞

我已经尝试了以下结果。

将 ~/projects/mylibrary 添加到 GOPATH

这不是 GOPATH 的工作方式。在 GOPATH 样式下构建源代码必须位于 GOPATH/src 之下。您似乎正在使用模块,因此摆弄 GOPATH 是无用的,因为它被忽略了。

运行 go install for mylibrary

那基本上没有任何作用。无论是在 GOPATH 还是在 Go 模块风格的构建中。让 Go 编译器在安装包和可执行文件时找到源代码是 100% 没用的。对于 Go 模块风格的构建,即使包安装实际上也无用。

你应该做的是遵循“如何编写 Go 代码”。

对于您的设置,您必须告诉module example.com/myapplication在哪里可以找到module example.com/mylibrary. 这是通过replacemyapplications go.mod 中的指令完成的:

replace example.com/mylibrary => <file-path-to-source-folder>

死的简单。

带走:

  • 您可以使用 Modules 或 GOPATH,但不要尝试混合使用它们。

  • go install(仅)对安装可执行文件有用。

  • 如果模块 A 想要使用模块 B 的本地版本:通过 A 的 go.mod 中的替换指令告诉模块 A。


查看完整回答
反对 回复 2022-06-01
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

在如何在另一个模块中使用“GOPATH”之外的模块?,它指出 我可以在本地文件系统上完全在 VCS 之外工作吗?.


似乎有点不雅,但看起来修复我的示例应用程序的官方方法是修改myapplication/go.mod以对库模块名称进行查找和替换,将其替换为相对文件系统路径。


因此,要使此示例正常工作,myapplication/go.mod将变为:


module example.com/myapplication


go 1.14


replace example.com/mylibrary => ../mylibrary


查看完整回答
反对 回复 2022-06-01
  • 2 回答
  • 0 关注
  • 169 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号