vendor ディレクトリについて読んだすべてのことから、ディレクトリがあれば次のことが理解できます。
$GOPATH/src/vendor
そして、依存関係をそこに置きます(私はgodepsを使用しています)。実行するときgo run
は、最初にそのディレクトリにチェックインする必要があります。
持っている Docker イメージでコードを実行すると、問題なく動作します。ただし、Windows マシンで同じコードを実行しようとすると、go は単にvendor/
ディレクトリを無視し、依存関係を見つけることができません。
私は何を間違っていますか?
main.go:7:2: cannot find package "gopkg.in/alecthomas/kingpin.v2" in any of:
C:\Go\src\gopkg.in\alecthomas\kingpin.v2 (from $GOROOT)
C:\Users\js\dev\my_project\rest\src\gopkg.in\alecthomas\kingpin.v2 (from $GOPATH)
C:\Users\js\dev\go\src\gopkg.in\alecthomas\kingpin.v2
私がやろうとしたときの出力は次のとおりです。
go run main.go
このディレクトリにはディレクトリvendor/
が存在します。
go version go1.7 windows/amd64
私が実行する正確なコマンド(Windows cmd.exeで)
> cd C:\Users\js\dev\my_project\rest\
> set GOPATH=C:\Users\js\dev\my_project\rest\;c:\Users\js\dev\go
> cd src
> dir
...
2016-09-01 23:20 2 923 main.go
...
2016-09-03 01:27 <DIR> vendor
> go run main.go