【发布时间】:2022-02-10 18:35:14
【问题描述】:
我在 Go 中编写了一个程序,完成代码后,如果我想在其他 pc 或 VM 上运行此代码,则它不会获取所有依赖包文件。如何获取所有依赖文件?
【问题讨论】:
标签: go
我在 Go 中编写了一个程序,完成代码后,如果我想在其他 pc 或 VM 上运行此代码,则它不会获取所有依赖包文件。如何获取所有依赖文件?
【问题讨论】:
标签: go
您可以从项目目录中运行 go get -d ./... 以下载所有 go-gettable 依赖项。
或者将 GOPATH 中的所有 src 子目录复制到目标计算机。... 是一种特殊模式,告诉递归下去。
【讨论】:
... 是一种特殊模式。它告诉递归下去。我已经更新了答案
./. 的回答,因为在我的电脑上尝试过你的命令后,它有点卡住了(现在我知道为什么了,因为递归搜索 go 文件可能非常昂贵),但后来我意识到最好先问。谢谢!
试试
go list -f '{{ join .Imports "\n" }}'
或
go list -f '{{ join .Deps "\n" }}'
第二个会列出所有的子依赖,第一个只列出直接导入的包。
【讨论】:
以下命令适用于我,它会下载所有依赖项。
go get -u -v -f all
【讨论】:
您可以在完成程序的本地电脑上使用godep save。 godep save 为你收集所有的依赖文件。当您移动到其他电脑时,只需将您的代码复制到 Godep 文件夹即可解决您的问题。
【讨论】:
它是go mod download。更多信息请查看go help mod
【讨论】:
如果您使用的是模块模式,可以尝试go mod tidy,如here 所述。
【讨论】:
最好的方法是获取列表并迭代安装包,这很好用:
while read l; do go get -v "$l"; done < <(go list -f '{{ join .Imports "\n" }}')
【讨论】: