【发布时间】:2015-11-23 02:54:23
【问题描述】:
在我用 Go 编写的 Google App Engine 项目中,我一直在使用例如
import "appengine/datastore"
成功了很长时间,并假设导入找到了我拥有 App Engine SDK 的东西。但是,现在我想使用 Google 的第三方库,该库也使用 App Engine 中的内容,但使用完整路径导入:
import "google.golang.org/appengine"
运行应用程序
$ goapp serve
找不到 appengine 失败:
...go/src/golang.org/x/oauth2/client_appengine.go:16: can't find import: "google.golang.org/appengine/urlfetch"
Can't find package "google.golang.org/appengine" in $GOPATH
显然,我想使用相同的 App Engine 部件,以免出现其他问题。我的第一个想法是我想告诉第三方库使用 App Engine SDK 库,但我不知道如何,因为它在导入中有不同的前缀。
我应该在我的项目中为所有 App Engine 导入使用完整路径吗?这与我在 Google 的 App Engine for Golang 网页上阅读的所有内容相反。例如。 here.
一般来说,如何设置才能在 App Engine 的开发和生产以及第三方库中找到正确的 appengine 库?
提前感谢您的帮助!
更新
我还可以看到,在添加第三方库并运行go get 后,它会将各种内容提取到$GOPATH/src/google.golang.org/api/... 中。那里有很多东西,还有 appengine 等等。似乎都是 Golang Google API...!
所以它没有解决,但我了解到有一个更改为 fully qualified appengine import paths。
现在我的应用在本地运行,因为我引入了新的 appengine 以满足使用新导入路径的 oauth 库。
go get google.golang.org/appengine
根据this:
如果您不想更新整个应用以使用新的 App Engine 软件包,您可以同时使用两组软件包,仅使用带有 oauth2 软件包的新软件包。
实际上非常混乱,我不知道在 App Engine 上部署时有什么可用的。有人知道吗?
【问题讨论】:
-
我很困惑。这解决了吗?仅仅是因为您从未获取过依赖项吗?
-
你试过
import "appengine"吗?我假设 Go 应该从$GOPATH实现而不明确说明完整路径。 -
它没有解决 - 阅读它并在这里找到一些东西:github.com/golang/appengine#2-update-import-paths
-
看起来 appengine 正在过渡到完全合格的导入路径,因此存在很多不一致之处......
标签: google-app-engine go dependencies