3

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
4

3 に答える 3

4

$GOPATH/src/これが機能しなかった理由は、ディレクトリにコードを直接配置することは想定されていないためです。

解決策は、次のようにプロジェクトをサブディレクトリに配置することです。

$GOPATH/src/app/*.go

于 2016-09-07T21:23:14.953 に答える
1

あなたGOPATHが間違っているようですか?はGOPATH、ワークスペースの場所、つまり を含むディレクトリsrcpkgおよびbinそのルートにあるディレクトリを指定する必要があります。

やってみる

GOPATH=C:\Users\js\dev\my_project\rest\;c:\Users\js\dev\go を設定します

詳細: https://golang.org/doc/code.html

于 2016-09-03T00:03:58.080 に答える