我在osX上设置Go App引擎时遇到了问题。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'
当我尝试更改路径以包含/src时:
GOPATH="/usr/local/google-cloud-sdk/platform/google_appengine/goroot/src"
$ go get
:使用命令行工具"go get"下载并安装Go语言包或其它第三方库。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
我将源代码复制到了/usr/local并运行了./install.sh脚本。
添加的额外路径没有解决我的错误。
我看到了这个回答:Test cases for go and appengine,但它是5年前的,而且看起来很笨拙。在5年时间里,应该有一种更优雅的解决方案,而不是复制单个目录并创建符号链接。
编辑**********************
mv /usr/local/google-cloud-sdk/ ~/go/
然后从.bash_profile中删除了GOPATH和GOROOT
然后我运行了./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'
~/google-cloud-sdk
。除非您的所有源文件都在您提到的work/gocode
目录中,否则请保持$GOPATH
设置为$HOME/go
,但我相信您想要$HOME/go
。此外,您的项目必须放置在$GOPATH/src`目录中。 - RayfenWindspear