在OS X上使用Go 1.6.2进行Go供应商实验时遇到了一些麻烦。
这是我的目录结构:
/project /application main.go other.go /vendor /github.com /vendor_name /package_name
我的GOPATH设置为/Users/me/project/application 但是,当我尝试运行任何go工具(例如,构建工具)时,似乎都在查找application/src而不是application/vendor,得到了很多这样的东西:
/Users/me/project/application
application/src
application/vendor
main.go:15:2: cannot find package "github.com/facebookgo/grace/gracehttp" in any of: /usr/local/Cellar/go/1.6.2/libexec/src/github.com/facebookgo/grace/gracehttp (from $GOROOT) /Users/me/project/application/src/github.com/facebookgo/grace/gracehttp (from $GOPATH)
如您所见,默认情况下,go env输出供应商实验处于启用状态,因为它似乎不起作用:
GOARCH="amd64" GOBIN="" GOEXE="" GOHOSTARCH="amd64" GOHOSTOS="darwin" GOOS="darwin" GOPATH="/Users/me/project/application" GORACE="" GOROOT="/usr/local/Cellar/go/1.6.2/libexec" GOTOOLDIR="/usr/local/Cellar/go/1.6.2/libexec/pkg/tool/darwin_amd64" GO15VENDOREXPERIMENT="1" CC="clang" GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fno-common" CXX="clang++" CGO_ENABLED="1"
现在,时髦的根源可能是先前go安装的宿醉。随着时间的推移,我安装了多种版本,有些通过gvm(版本管理器),有些通过自制软件。因此,我已经卸载了gvm以及已安装的go的版本,还取消了homebrew的安装,并使用homebrew仅重新安装了1.6.2。
去版本输出:
go version go1.6.2 darwin/amd64
去哪:
/usr/local/bin/go
任何想法在这里可能出了什么问题,或者我可能只是误解了供应商应该如何工作?
附言:请告诉我是否需要更多信息,乐意提供
似乎在application / src中
是的,走的是在寻找$GOPATH/src,无论是你的源代码 ,并 为vendor源文件夹。
$GOPATH/src
vendor
一切都应该在 $GOPATH/src
该 供应商的文件夹 是指只有在的“父目录树上代码是可导入vendor”。 但这是您资料来源的一部分,因此,该资料应位于下方$GOPATH/src。