2016-05-16 35 views
2

在osx上使用go 1.6.2工具时遇到了一些麻烦。GO(Golang)供应商实验在mac osx上失败

继承人我的目录结构:

/project 
    /application 
     main.go 
     other.go 
     /vendor 
      /github.com 
       /vendor_name 
        /package_name 

我有我的GOPATH设置为/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) 

正如你可以看到去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" 

现在,funkiness的来源可能是之前安装的宿醉。我已经安装了各种版本,一些通过gvm(去版本管理器),一些通过自制软件。所以我卸载了gvm和它已经安装的版本,也停止了使用自制软件,并且使用自制软件重新安装了1.6.2。

去版本输出:

go version go1.6.2 darwin/amd64 

哪去了:

/usr/local/bin/go 

任何想法可能已经错在这里,还是我也许只是误解vendoring应该如何工作?

P.S.请ELT我知道如果你需要更多的信息,竭诚为客户提供

回答

2

它似乎是在寻找应用程序/ src目录

是的,走的是寻找在$GOPATH/src,无论是对你的源代码vendor来源文件夹。

一切都应该在$GOPATH/src

vendor folder意味着只有在的“vendor”父目录树上代码是导入的。
但它是您的来源的一部分,因此,应该在$GOPATH/src下。

+0

谢谢,我得到了这个工作。我看了一些似乎建议你可以删除/ src文件夹的例子。它点击你的答案,你可以从供应商目录中删除src,但供应商目录必须位于/ src下面。我真的很讨厌在golang工厂开展工作的方式,这是一个小改进。我的新设置是让home/me /项目成为我的gopath,在其下有一个src文件夹,然后我将所有项目与他们自己的供应商文件夹保存在一起,并具有单独的依赖关系。这似乎工作。 – WebweaverD