2016-06-27 65 views
2

儘管設置了GOPATH,但命令go get github.com/gogo/protobuf/proto似乎仍無法正常工作。「go <package>」找不到包

GOPATH="/Users/tmp/Documents/workspace/app/go" 

我看到其他包類似的問題。正在讀

錯誤:

package github.com/gogo/protobuf/proto: cannot find package "github.com/gogo/protobuf/proto" in any of: 
    /usr/local/go/src/github.com/gogo/protobuf/proto (from $GOROOT) 
    /Users/tmp/Documents/workspace/app/go/src/github.com/gogo/protobuf/proto (from $GOPATH) 

運行go env顯示:

GOARCH="amd64" 
GOBIN="" GOEXE="" GOHOSTARCH="amd64" GOHOSTOS="darwin" GOOS="darwin" 
GOPATH="/Users/tmp/Documents/workspace/app/go" GORACE="" 
GOROOT="/usr/local/go" GOTOOLDIR="/usr/local/go/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" 

這是什麼問題,如何解決這一問題?我在這個網上沒有發現任何東西,但是這在以前工作。

+0

是否存在「/ Users/tmp/Documents/workspace/app/go/src」?編輯:沒關係,請參閱下面的@Mark評論。 – toqueteos

+2

[github.com/gogo/protobuf/proto](https://github.com/gogo/protobuf/proto)不存在,請檢查包名是否正確 – Mark

+0

我的錯誤:[gogo/protobuf](https:/ /github.com/gogo/protobuf)確實存在,並github.com/gogo/protobuf/proto是去gettable – Mark

回答

1

經過一番搗鼓之後,我發現src目錄下的某些源文件被刪除了。我刪除了整個文件夾及其內容,導致整個包被重新安裝。這似乎已經清除了問題並解決了問題。

我應該注意到我碰到了一起調試方式的另一個錯誤:

沒有可建造轉到源文件/Users/tmp/Documents/workspace/app/go/src/github.com/golang/protobuf/proto

再次,這是在刪除源文件夾中的整個包後全部解決。

@Mark:有一點需要注意的是,我參考了https://github.com/golang/protobuf的正確包裝名稱。

+0

很高興它的工作。我認爲你問題中的軟件包名稱是一個錯字,並沒有意識到[gogo/protobuf](https://github.com/gogo/protobuf)是官方的[golang/protobuf]的端口(https://github上。com/golang/protobuf) – Mark

+0

也許不是這裏的情況,但是如果軟件包所有者重命名部分導入路徑,也會發生這種情況。如果「去得到」之前的工作,但不是現在,這是一個可能的原因。 –

2

我不知道是否刪除整個文件夾是壞事。

首先,您可以嘗試使用-u標誌(go cmd doc)重新安裝所有其他依賴項。

-u標誌指示可以使用網絡更新命名包及其依賴關係。默認情況下,get使用網絡檢出丟失的包,但不使用它來查找現有包的更新。

去獲得的支持也建立標誌重建包,你可以嘗試-a:那已經都準備好最新的軟件包

-a 力重建。

+0

我嘗試了「-u」標誌以及http://stackoverflow.com/questions/24095004/cant-load-package-package-no-buildable-go-source-files建議的「-d」標誌。都沒有工作。這是有用的信息,但並未解決原始問題。我沒有嘗試「-a」命令,並且需要複製錯誤以查看它是否可行。 – and0rsk