【问题标题】:vendor folder not used with 'go build'供应商文件夹未与“go build”一起使用
【发布时间】:2016-12-25 08:09:42
【问题描述】:

我在 MacOS Sierra 中使用 go-1.7。

我的项目位于我的 $GOPATH/src 文件夹中,并且其中有一个 vendor 文件夹,其中包含所有依赖项。

我在我的代码中使用这样的依赖项:

import (
"github.com/google/go-github/github"
)

现在,如果我运行 go build,我会收到一条消息,即在另一个 $GOROOT 和 $GOPATH 中找不到我使用的所有依赖项,并且在我的代码中添加“供应商”正在工作:

import (
"vendor/github.com/google/go-github/github"
)

但据我所知,应该可以在第一个代码被剪掉时喜欢。

仅供参考,没有符号链接等。

【问题讨论】:

  • 你的代码是直接在$GOPATH/src吗?这就是问题所在。即使使用供应商目录,您的代码仍必须位于 $GOPATH 内它自己的子目录中(例如 $GOPATH/src/foo)
  • 它在一个子文件夹中($GOPATH/src/project)
  • go build 应该列出它搜索的路径。其中一个应该在路径之后有“(供应商树)”。在您的情况下,它应该列出“$GOPATH/src/project/vendor/github.com/google/go-github/github”。如果不是,则 go 工具无法识别您的供应商目录。
  • 我知道它列出了它们,但只列出了 $GOPATH 和 $GOROOT...所以是的,它无法识别我的供应商文件夹,这就是我要修复的 ^^

标签: github go


【解决方案1】:

从 go 1.12+ 开始,go modules 是处理依赖项的新方法。

  • 修复依赖版本go mod init
  • 将模块引入供应商文件夹go mod vendor
  • 从供应商目录go build -mod vendor -o output构建

【讨论】:

    【解决方案2】:

    好的,找到问题了:

    我的 MacOS 文件系统不区分大小写,但似乎 go 工具无法处理... 修复了我的 $GOPATH,现在它可以正常工作了......

    【讨论】:

    • 您能详细解释一下问题和解决方法吗?这可能对其他人有帮助。
    • 好吧,我只是在我的 shell 配置文件中更改了 $GOPATH... 所以我没有将其 export GOPATH=/projects/go 更改为 export GOPATH=/Projects/go 因为那是实际的文件夹名称..
    • 这正是发生在我身上的事情。在我的 Mac 上,我做了一个 cd directory/to/my/gopath 然后运行了构建,由于目录是 Directory/to/my/gopath,所以它崩溃了。
    【解决方案3】:

    我遇到了这个错误并挣扎了一段时间;我更新到 Go 1.8.3 并使用 glide 版本 0.12.3;并且我的 GOPATH 设置为 $PWD 并且 glide 正在将所有内容安装在 ./vendor 文件夹中;

    终于报错了; GOPATH 下应该有一个 src 文件夹,你的所有工作空间都应该在这个 src 文件夹下

    它必须在文档中,并且在开发机器中我设置它正确;但在 Jenkins 构建中错过了

    【讨论】:

    • 事实上,如果你看go help gopath,它已经在文档中了
    【解决方案4】:

    您可以在终端中使用echo $GOPATH 来查看我的golang 路径是/home/gujarat/golang。这是没有src 路径的默认路径。

    所以从这里你所有的包和依赖项都在src$GOPATH 中。例如,这是我在项目中使用的一些包。

    "fmt"
    "github.com/myproject/lol/src/config" // notice the first github.com
    "gopkg.in/redis.v4" // notice the gopkg.in
    "log"
    

    从上面的包中,您必须将所有文件夹和依赖项复制到您的src 文件夹中。像github.comgopkg.in 这些是src 根目录中必须存在的文件夹。

    如果您无法导入您的"github.com/google/go-github/github",则意味着您的github.com 在您的src 中没有此文件夹。希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2018-11-11
      • 2017-12-13
      • 1970-01-01
      • 2021-12-16
      • 2019-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多