Go言語 パッケージ導入で "can't find import: xxx" と言われたときにどうしたらよいか
例えば、Go を使い 'gorilla/mux' というパッケージをインポートしたのですが、
次のようなエラーが出ました。
/Users/kosuke/Workspaces/gocode/src/github.com/gorilla/mux/context_gorilla.go:8: can't find import: "github.com/gorilla/context" 2017/04/21 15:32:10 Can't find package "github.com/gorilla/context" in $GOPATH: cannot find package "github.com/gorilla/context" in any of: /Users/kosuke/google-cloud-sdk/platform/google_appengine/goroot/src/github.com/gorilla/context (from $GOROOT) /Users/kosuke/Workspaces/gocode/src/github.com/gorilla/context (from $GOPATH) 2017/04/21 15:32:10 go-app-builder: build timing: 0×skip (2ms total), 5×compile (675ms total), 0×link (0 total) 2017/04/21 15:32:10 go-app-builder: failed running compile: exit status 2
Go を使いはじめたばかりの私には、さっぱり原因がわからなかったのですが、
'go get' の仕方が問題だったようです。
上位の場合は、github.com/gorilla/mux パッケージが依存している
github.com/gorilla/context が見つからないと言っています。
確かに $GOPATH 以下のファイルを調べてみた所、mux はあるが context は見つかりません。
go get コマンドには、この依存関係を考慮してパッケージを取得するオプションがあります。
'-u' オプションです。
私は、こうする必要がありました。
$ go get -u github.com/gorilla/mux
確かに、問題が起きたときは '-u' を付与し忘れていたと思います。