[英]AppEngine: can't find import “google.golang.org/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,有些还没有。
( 来源 ,从你的一个链接稍微向下)
如果您需要同时使用appengine
和google.golang.org/appengine
则可以使用别名导入路径来实现此目的。 就像是:
import (
oldAppengine "appengine"
"google.golang.org/appengine"
)
或者无论你想给它们命名什么。
如果部署时某些内容不可用,您将在构建时遇到错误,并且不会部署到App Engine,因此您不必担心它。
如果您正在使用gosdk,只需将goapp get
与goapp get
文件放在同一目录中,它就会下载并安装依赖项到您的gosdk安装。 然后再次部署应用程序,它应该编译没有问题。
当它工作时没有提示,文件将被下载到gosdk \\ gopath \\ src
fininshing后会有一条警告信息可以忽略:
go install:目录C:\\ your_current_directory在GOPATH之外没有安装位置有关详细信息,请参阅:go help gopath
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.