gpt4 book ai didi

google-app-engine - 如何使 vendor 与 Google App Engine 一起工作?

转载 作者:IT老高 更新时间:2023-10-28 13:07:01 26 4
gpt4 key购买 nike

我正在尝试将 Go vendoring(将依赖项存储在名为 vendor 的文件夹中)引入现有 App Engine 项目。我已将所有依赖项存储在 vendor 文件夹中(使用 Godep 作为帮助程序),它看起来正确,但在本地运行应用程序时出现以下错误:

go-app-builder:解析输入失败:从多个位置导入包“golang.org/x/net/context”:“/Users/erik/go/src/github.com/xyz/abc/vendor/golang.org/x/net/context”和“/Users/erik/go/src/golang.org/x/net/context”

我相信这两个位置应该解析到同一个位置,因为 Go 应用程序应该首先查看 vendor 文件夹。有没有办法让 Appengine 明白这两个依赖项是一样的?

最佳答案

您的项目目录(app.yaml 所在的位置)可能在 GOPATH/src 中。不应该。go-app-builder 将获取 app.yaml 文件夹(及以下)中的所有内容,并将您的 GOPATH 合并到其中,这意味着您现在拥有两次。

解决方案是将 app.yaml 移出 GOPATH/src 文件夹。此外,您会发现 goapp test 在解析依赖项时与 goapp servegoapp deploy 的工作方式不同。

所以这是我一直在使用的解决方案(已经有一段时间没有使用 golang 应用程序引擎了),它是我发现的唯一可以正常工作的所有 goapp 命令和让 govendor 正常工作(不确定 godep)

/GOPATH
├──/appengine
| ├── app.yaml
| └── aeloader.go
└──/src
└── /MYPROJECT
├── main.go
├── /handler
| └── handler.go
└── /vendor

详情:

file: GOPATH/appengine/aeloader.go (NOTE the init function is necessary, probably a bug though)
package mypackage

import (
_ "MYPROJECT"
)

func init() {
}

现在从 ../GOPATH/appengine/goapp test ./... 运行 goapp servegoapp deploy 来自 ../GOPATH/src/MYPROJECT

附:我发现全局 GOPATH 的事情很愚蠢,只需将我的 GOPATH 设置为当前项目文件夹(在上面的示例中 /GOPATH)并将整个内容检查到版本控制中。

关于google-app-engine - 如何使 vendor 与 Google App Engine 一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39948027/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com