2016-05-16 40 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