【问题标题】:How to get all dependency files for a program如何获取程序的所有依赖文件
【发布时间】:2022-02-10 18:35:14
【问题描述】:

我在 Go 中编写了一个程序,完成代码后,如果我想在其他 pc 或 VM 上运行此代码,则它不会获取所有依赖包文件。如何获取所有依赖文件?

【问题讨论】:

    标签: go


    【解决方案1】:

    您可以从项目目录中运行 go get -d ./... 以下载所有 go-gettable 依赖项。
    或者将 GOPATH 中的所有 src 子目录复制到目标计算机。
    ... 是一种特殊模式,告诉递归下去。

    【讨论】:

    • 如果我需要运行/修改代码,那么它找不到包。
    • 我知道我可以通过 go get 获取包,但是当程序使用许多包时,它非常耗时且困难。
    • -t 也会安装测试依赖项
    • @AlbertoSchiabel ... 是一种特殊模式。它告诉递归下去。我已经更新了答案
    • 感谢@RoninDev!起初我打算编辑你对./. 的回答,因为在我的电脑上尝试过你的命令后,它有点卡住了(现在我知道为什么了,因为递归搜索 go 文件可能非常昂贵),但后来我意识到最好先问。谢谢!
    【解决方案2】:

    试试

    go list -f '{{ join .Imports "\n" }}'
    

    go list -f '{{ join .Deps "\n" }}'
    

    第二个会列出所有的子依赖,第一个只列出直接导入的包。

    【讨论】:

      【解决方案3】:

      以下命令适用于我,它会下载所有依赖项。

      go get -u -v -f all
      

      【讨论】:

      • 需要很长时间!!!它会下载我在项目中从未使用过的包!
      【解决方案4】:

      您可以在完成程序的本地电脑上使用godep save。 godep save 为你收集所有的依赖文件。当您移动到其他电脑时,只需将您的代码复制到 Godep 文件夹即可解决您的问题。

      【讨论】:

      • 也许这对某些人来说是显而易见的,但我不得不去挖掘它。事实证明,您需要将 godep 或 dep 包安装到 Go。这个 Github 网站在这里:github.com/tools/godep
      【解决方案5】:

      它是go mod download。更多信息请查看go help mod

      【讨论】:

        【解决方案6】:

        如果您使用的是模块模式,可以尝试go mod tidy,如here 所述。

        【讨论】:

          【解决方案7】:

          最好的方法是获取列表并迭代安装包,这很好用:

          while read l; do go get -v "$l"; done < <(go list -f '{{ join .Imports "\n" }}')
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-04-14
            • 1970-01-01
            • 1970-01-01
            • 2012-02-01
            • 1970-01-01
            • 2017-01-19
            • 2013-10-06
            相关资源
            最近更新 更多