如何正确导入Golang appengine?

mur*_*att 16 google-app-engine dependencies go

在用Go编写的Google App Engine项目中,我一直在使用eg

import "appengine/datastore"
Run Code Online (Sandbox Code Playgroud)

很长一段时间成功并假设导入找到了我有App Engine SDK的地方.但是,现在我想使用来自Google的第三方库,它也使用App Engine中的东西,但是使用完整路径导入:

import "google.golang.org/appengine"
Run Code Online (Sandbox Code Playgroud)

运行应用程序

$ goapp serve
Run Code Online (Sandbox Code Playgroud)

失败,没有找到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
Run Code Online (Sandbox Code Playgroud)

显然我想使用相同的App Engine部件来解决其他问题.我的第一个通道是我想告诉第三方库使用App Engine SDK库,但我不知道它在导入中有不同的前缀.

我应该在项目中使用所有App Engine导入的完整路径吗?这与我在谷歌针对Golang网页的App Engine上所阅读的内容完全相反.比如这里.

一般来说,设置东西的方式是什么,以便在App Engine和第三方库的开发和生产中找到合适的appengine库?

在此先感谢您的帮助!

UPDATE

我还可以看到,在添加第三方库并运行go get它之后,将所有类型的东西都输入$GOPATH/src/google.golang.org/api/....那里有很多东西和appengine等等.似乎是所有Golang Google API ......!

所以它没有得到解决,但我了解到有一个变化会改变为完全合格的appengine导入路径.

现在我的应用程序在本地运行,因为我引入了新的appengine以满足使用新导入路径的oauth库.

go get google.golang.org/appengine
Run Code Online (Sandbox Code Playgroud)

根据这个:

如果您不想更新整个应用程序以使用新的App Engine软件包,则可以并行使用两组软件包,仅使用带有oauth2软件包的新软件包.

实际上非常令人困惑,我不知道在App Engine上部署时可用的内容.有人知道吗?

ada*_*m_0 10

就像你的更新说的那样; 您可以并行使用这两种类型的导入(在相同的代码块中),同时他们弃用旧的API并完成新的API:

大多数App Engine服务都提供完全相同的API.清理了一些API,有些还没有.

(来源,从你的一个链接稍微向下)

如果您需要同时使用两者appengine,google.golang.org/appengine则可以使用别名导入路径来实现此目的.就像是:

import (
   oldAppengine "appengine"
   "google.golang.org/appengine"
)
Run Code Online (Sandbox Code Playgroud)

或者无论你想给它们命名什么.

如果部署时某些内容不可用,您将在构建时遇到错误,并且不会部署到App Engine,因此您不必担心它.