Как правильно импортировать Golang appengine?

В моем проекте Google App Engine, написанном в разделе "Go", который я использовал, например,

import "appengine/datastore"

с успехом в течение длительного времени и при условии, что импорт находит вещи, где у меня есть SDK App Engine. Однако теперь я хочу использовать стороннюю библиотеку также от 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

Очевидно, что я хочу использовать те же части приложения Engine, чтобы не было других проблем. Мое первое, что я хочу сказать библиотеке сторонних разработчиков, использовать библиотеки SDK App Engine, но я не знаю, как он имеет другой префикс в импорте.

Должен ли я использовать полный путь в моем проекте для всех импорта App Engine? Это было бы противоположно тому, что я читал на веб-страницах Google App Engine для Golang. Например. здесь.

Как правило, каким образом можно настроить файлы так, чтобы они находили нужные библиотеки приложений как в разработке, так и в App Engine, а также в сторонних библиотеках?

Заранее благодарим за помощь!

UPDATE

Я также вижу, что после добавления библиотеки сторонних разработчиков и запуска go get он извлекал всевозможные вещи в $GOPATH/src/google.golang.org/api/.... Много вещей там и appengine, как и т.д. Кажется, все Golang API Google...!

Так что это не удалось решить, но я узнал, что есть изменения, которые меняют на полностью адаптированные пути импорта приложений.

Теперь у меня есть приложение, выполняемое локально, когда я загрузил новый appengine, чтобы удовлетворить библиотеку oauth, которая использует новые пути импорта.

go get google.golang.org/appengine

В соответствии с этим:

Если вы не хотите обновлять все приложение для использования новых пакетов App Engine, вы можете использовать оба набора пакетов параллельно, используя только новые пакеты с пакетом oauth2.

На самом деле очень запутанно, и я не знаю, что доступно, когда я развертываю App Engine. Кто-нибудь знает?

Ответы

Ответ 1

Это похоже на ваше обновление; вы можете использовать оба типа импорта параллельно (в том же фрагменте кода), в то время как они устарели старым API и заканчивают новый:

Большинство служб App Engine доступны с точно таким же API. Несколько API были очищены, а некоторые еще недоступны.

(источник, чуть дальше от одной из ваших ссылок)

Если вам нужно использовать как appengine, так и google.golang.org/appengine, вы можете указать пути импорта, чтобы сделать это возможным. Что-то вроде:

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

Или все, что вы хотите назвать.

Если что-то не доступно при развертывании, вы получите ошибки в сборке и не будете развертываться в App Engine, поэтому вам не придется беспокоиться об этом.

Ответ 2

Если вы используете gosdk, просто запустите goapp get в том же каталоге, что и ваш .go файл, и он загрузит и установит зависимости к вашей установке gosdk. Затем вы снова развертываете приложение, и оно должно скомпилироваться без проблем.

Когда он работает там, приглашение и файлы не будут загружены в gosdk\gopath\src

После финиширования появится предупреждающее сообщение, которое можно игнорировать:

go install: нет места установки для каталога C:\ваш_current_directory вне GOPATH         Для получения дополнительной информации см.: go help gopath