2015-08-28 61 views
14

在我用Go編寫的Google App Engine項目中,我一直在使用例如如何正確導入Golang appengine?

import "appengine/datastore" 

成功很長時間,並假設導入定位的東西,我有App Engine SDK。不過,現在我想用也從谷歌第三方庫,它使用從App Engine的東西爲好,但與全路徑進口:

import "google.golang.org/appengine" 

運行App

$ 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庫?

在此先感謝您的幫助!

UPDATE

我還可以看到添加第三方庫和運行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上時有什麼可用的。有人知道嗎?

+0

爲什麼downvote? – murrekatt

+2

我很困惑。這解決了嗎?僅僅是因爲你從未獲得過你的依賴關係? – JimB

+1

您是否嘗試過'導入「appengine」'?我假設Go應該從'$ GOPATH'中實現,而不明確指出完整路徑。 – PieOhPah

回答

8

這就像你的更新說,您可以使用兩種類型的水貨(在相同的代碼塊),而他們即將棄用舊的API,並完成了新一:

大部分App Engine服務提供完全相同的API。一些API被清理,有些還沒有提供。

source,從你的鏈接之一,還有更遠)

如果您需要同時使用appenginegoogle.golang.org/appengine那麼你可以別名導入路徑,使之成爲可能。例如:

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

或者任何你想命名它們的東西。

如果部署時某些東西不可用,您將在構建時遇到錯誤,並且不會部署到App Engine,因此您不必擔心。

+0

是的,似乎是這樣......只是讓我想知道,當你同時使用兩個東西時,是否有一些東西可能會變壞。例如。考慮相同的對象,但不同的尺寸... – murrekatt

+0

當然,如果你從一個包傳遞到另一個包,可能會有一些無法比擬的細節實現細節。我認爲,這個想法只是使用舊的或新的(例如,「appengine」或「google.golang.org/appengine」)的相同軟件包中的一個,然後轉換軟件包,一次一個。反正你不想使用舊的,因爲它已經被棄用了,除非你使用的東西在新的包中不起作用。但是如果你有*,包裹可以共存一段時間,我敢打賭。 –

1

如果您使用的是gosdk,只需在與.go文件相同的目錄下運行goapp get,它將下載並安裝依賴到您的gosdk安裝。然後您再次部署應用程序,它應該可以順利編譯。

當它的工作沒有任何提示和文件將被下載到gosdk \ GOPATH \ SRC

fininshing會有可以忽略的警告消息後:去安裝

:沒有安裝位置對於目錄 C:\ your_current_directory外GOPATH 有關詳細信息,請參閱:去幫助GOPATH