繁体   English   中英

如何正确导入Golang appengine?

[英]How to correctly import Golang appengine?

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

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导入的完整路径吗? 这与我在谷歌针对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

根据这个

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

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

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

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

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

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

import (
   oldAppengine "appengine"
   "google.golang.org/appengine"
)

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

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

如果您正在使用gosdk,只需将goapp getgoapp get文件放在同一目录中,它就会下载并安装依赖项到您的gosdk安装。 然后再次部署应用程序,它应该编译没有问题。

当它工作时没有提示,文件将被下载到gosdk \\ gopath \\ src

fininshing后会有一条警告信息可以忽略:

go install:目录C:\\ your_current_directory在GOPATH之外没有安装位置有关详细信息,请参阅:go help gopath

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM