Golang的requirements.txt等价物

21

作为一个python/django世界的开发者,我希望有类似于go/revel的requirements.txt的东西。我该如何做到这一点?我知道我可以编写一个requirements.txt文件,然后执行类似于

cat requirements | xargs go get

但是如果我的要求也有要求怎么办?上述命令会尝试“获取”它们,然后由于我没有安装这些要求,它们将无法构建。

我是否遗漏了什么?


6
go get 应该会获取每个包所需的所有依赖项,您不需要指定它们。尝试一下并查看它是否符合您的要求。 - Intermernet
1
与Python或大多数其他编程语言不同,Go在每个源文件中都有导入语句,指定导入的代码来自哪里。这就是为什么不需要单独的包描述符文件。(只有当您需要指定版本约束时才会涉及这一点,请参见https://github.com/golang/go/wiki/vgo,这是从Go 1.11和1.12开始使用的工具。) - Robert Jack Will
2个回答

17

1
你分享的链接并没有解释如何编写自己的依赖项。此外,开发人员和用户可能具有不同的依赖项集合。 - erikbstack
@erikbwork 能否解释一下什么是“我的依赖项”?以及您所说的用户和开发人员的“不同依赖集”是什么意思?您是否考虑过测试代码所需的依赖?如果是这样:Go get 可以处理此问题(请参见命令行标志)。如果您谈论需要其他工具(例如,go generates 依赖 yacc 或 m4),则 go get 不适合您。Go get 下载并从源代码构建 Go 包,它不是软件包管理器或系统配置工具。 - Volker
我不懂go,所以无法用这些术语向您解释。但通常现代软件需要一些额外的包,例如,您的程序可能会解析yaml文件。然后您需要go-yaml库的3.1.5版本。如果您从未将其写下来,我怀疑go get无法找到它。开发人员和用户之间的区别主要在于稳定性。开发人员可以使用3.4.5版本而不是3.1.5版本,因为它包含所有新功能,但可能会出现故障。尽管如此,用户仍会在最新版本中获得3.1.5版本,因为它不太容易出现故障。 - erikbstack
@erikbwork,您正在谈论软件包管理,市面上有很多工具,其中一些几乎是官方的。这样的讨论与go get无关。 - Volker
2
是的,但它与你试图在这里回答的问题并不无关。 - erikbstack

3

我刚刚发现,Kubernetes团队实际上为自己创建了一个概述页面,可以在这里找到。

总结如下:目前稳定的是Glide,而最新的酷玩具叫做dep


此内容已过时,截至2019年。 - user4466350

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接