2013-11-08 5 views
1

Я разрабатываю некоторые библиотеки GO с использованием Google Cloud SQL и сервера MySQL. Когда я импортировал `appengine/cloudsql, произошла ошибка ниже.не удается найти пакет «appengine/cloudsql»

cloud.go:20:2: cannot find package "appengine/cloudsql" in any of: /usr/local/Cellar/go/1.1.2/src/pkg/appengine/cloudsql (from $GOROOT) /Users/lameduck/myGo/src/appengine/cloudsql (from $GOPATH)

Я знаю, что этот пакет, appengine/cloudsql, только для Google App Engine и не существует на везде.

Мне интересно, как я могу использовать его для GAE и стандартной библиотеки sql для других сред в одной библиотеке.

PS: Я могу правильно настроить SDK Google App Engine. Мой вопрос не имеет к этому отношения. Надеюсь, что моя библиотека работает вместе с Google App Engine и автономной средой. (Я уже сделал код для GAE и код для других dabatases.) Хорошо, что пользователям приходится настраивать некоторые конфигурации. Но я не хочу, чтобы пользователи модифицировали исходный код библиотеки.

Спасибо за любую помощь.

+3

Посмотрите на https://developers.google.com/appengine/docs/go/gettingstarted/devenvironment. Похоже, что Go AppEngine SDK не может быть установлен. – Intermernet

+0

Существует также ссылка (но нет содержимого) относительно «Использование локального экземпляра MySQL во время разработки» на странице https://developers.google.com/appengine/docs/go/cloud-sql/#Go_Using_a_local_MySQL_instance_during_development, поэтому я бы сказал, что это сейчас работаем. – Intermernet

+0

Спасибо @Intermernet. Но мой вопрос не имеет отношения к настройке GAE SDK. Я разрабатываю библиотеку, которая использует Google Cloud SQL или стандартные SQL-серверы. Если библиотека работает в Google App Engine, она работает правильно. В противном случае произошла ошибка. Мне интересно, как я могу изолировать код GAE и другие вещи, чтобы избежать этой ошибки. – Dalinaum

ответ

3

Я решил проблему. Я использовал build constraint, чтобы использовать правильную процедуру и избежать ошибки. Существует ограничение на создание для App Engine, appengine.

SDK приложения Engine представляет новый термин ограничения сборки: «appengine». Файлы, которые определяют

// + build appengine будет создан SDK App Engine и проигнорирован инструментом go. И наоборот, файлы, которые указывают

// + build! Appengine игнорируются SDK App Engine, а инструмент go с радостью создаст их.

PS: Anway, я поддержал другие ответы. Спасибо.

1

Импорт пакета осуществляется во время компиляции/ссылки. И Go не поддерживает условный импорт времени выполнения в отличие от Python.

Функция, которую вы ищете, - это загрузка динамической библиотеки (например, в C/C++ вы можете загрузить .so/.dll во время выполнения), но в настоящее время Go.

Смежные вопросы