Где GO искать google-cloud-sdk? Что должно делать GOPATH?

У меня возникли проблемы с настройкой Go App engine на osX. Должен ли путь google-cloud-sdk в GOROOT или GOPATH?

Я помещаю google-cloud-sdk в /usr/local

Похоже, что есть исходный код: goroot/

/usr/local/google-cloud-sdk/platform/google_appengine/goroot/

go env

GOPATH="/usr/local/google-cloud-sdk/platform/google_appengine/goroot"  
GORACE=""  
GOROOT="/usr/local/go"  
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64" 

$go get

package google.golang.org/appengine: cannot download, /usr/local/google-cloud-sdk/platform/google_appengine/goroot is a GOROOT, not a GOPATH. For more details see: 'go help gopath'   
package google.golang.org/appengine/datastore: cannot download, /usr/local/google-cloud-sdk/platform/google_appengine/goroot is a GOROOT, not a GOPATH. For more details see: 'go help gopath'  

Когда я попытался изменить PATH, чтобы включить /src:

GOPATH="/usr/local/google-cloud-sdk/platform/google_appengine/goroot/src"  

$go get

package google.golang.org/appengine: mkdir /usr/local/google-cloud-sdk/platform/google_appengine/goroot/src/src: permission denied  
package google.golang.org/appengine/datastore: cannot find package "google.golang.org/appengine/datastore" in any of:  
    /usr/local/go/src/google.golang.org/appengine/datastore (from $GOROOT)  
    /usr/local/google-cloud-sdk/platform/google_appengine/goroot/src/src/google.golang.org/appengine/datastore (from $GOPATH)  

Я добавил путь к google-cloud-sdk в GOROOT:

export GOROOT="/usr/local/go/:/usr/local/google-cloud-sdk/platform/google_appengine/goroot"

GO не похоже на несколько путей в GOROOT:
$ go get

go: cannot find GOROOT directory: /usr/local/go/:/usr/local/google-cloud-sdk/platform/google_appengine/goroot

Я запустил. /install.sh script после того, как скопировал источник в /usr/local

Дополнительный добавленный PATH не исправил ошибки, которые у меня были.

Я увидел этот ответ: Тест-коды для go и appengine

Но это от 5 лет назад и кажется неуклюжим/хаки. Кажется, через 5 лет будет более элегантное решение, которое копирует отдельные каталоги и создает символические ссылки.

ИЗМЕНИТЬ **********************
 mv /usr/local/google-cloud-sdk/ ~/go/, затем удалите GOPATH и GOROOT из .bash_profile

Затем я запустил. /install.sh

Я попытался запустить 'go get':

$go get

go install: no install location for directory /Users/Bryan/work/gocode/skincarereview outside GOPATH

Так как это не удалось, я добавил путь к рабочему каталогу кода И добавил путь к google-cloud-sdk в PATH:

export GOPATH = "/Users/Bryan/work/gocode/skincarereview"
export PATH=$HOME/google-cloud-sdk:$PATH

go get получить сбой с тем же сообщением:

$ go get  

go install: no install location for directory /Users/Bryan/work/gocode/skincarereview outside GOPATH  
    For more details see: 'go help gopath'  

Ответ 1

Он не входит ни в $GOROOT, ни в $GOPATH. Просто распакуйте его в свой каталог $HOME и запустите программу установки. Если необходимо, добавьте его в свой $PATH, добавив эту строку в свой .bash_profile.

export PATH=$HOME/google-cloud-sdk:$PATH

Удостоверьтесь, что вы также закрепили golang SDK с помощью gcloud components install app-engine-go https://cloud.google.com/appengine/docs/standard/go/download

НЕ меняйте свой путь, чтобы включить каталог src в google-cloud-sdk/platform/google_appengine/goroot/src. Это нарушит все. Вы оставляете свой GOPATH своей обычной установкой. Использование SDK App Engine для Go автоматически использует источники в этом каталоге без каких-либо манипуляций.

Кроме того, НИКОГДА НИКОГДА НЕ ИЗМЕНЯЙТЕ $GOROOT, если вы не планируете компилировать новую версию Go из исходного кода (как в новой версии языка). Он автоматически установит для вас правильный $GOROOT. https://dave.cheney.net/2013/06/14/you-dont-need-to-set-goroot-really

Если ваша установка перепутана вне причины (со мной однажды), просто удалите облачный SDK и любые ссылки на него в вашем PATH. Также полностью удалите обычную установку Go. Затем начните с нуля. Установите Go, распакуйте google-cloud-sdk, запустите программу установки (добавьте в $PATH, если необходимо), gcloud components install app-engine-go. Вуаля.

При разработке для App Engine ваши источники go попадают в ваш REGULAR $GOPATH. Они НЕ входят в google-cloud-sdk/... в любом месте. Чтобы локально запустить dev_appserver, запустите dev_appserver.py [path-to-source], где указанный путь содержит ваш код и app.yaml. Я обычно cd в моем пути к проекту (например, cd $HOME/go/src/myproject) и запускаю с dev_appserver.py ./. https://cloud.google.com/appengine/docs/standard/go/tools/using-local-server

Здесь раскрывается развертывание. https://cloud.google.com/appengine/docs/standard/go/tools/uploadinganapp

EDIT: структура папок.

$GOPATH = $HOME/go

введите описание изображения здесь

Расположение папки google-cloud-sdk

введите описание изображения здесь