6

go1.6 を実行していますが、GOPATH (/Users/bweidlich/Projects/go) で「go build」を実行すると、次のエラーが発生します。

main.go:6:2: cannot find package "github.com/spf13/viper" in any of:
/usr/local/go/src/github.com/spf13/viper (from $GOROOT)
/Users/bweidlich/Projects/go/src/github.com/spf13/viper (from $GOPATH)

プロジェクトの構造:

bin/
glide.lock
glide.yaml
go.iml
logs/
main.go
pkg/
src/
vendor/
      github.com/
                 deckarep/gosx-notifier
                 spf13/viper
                 gizak/termui

main.go

package main

import (
    "fmt"
    "github.com/gizak/termui" <--- doesn't resolve
    "github.com/spf13/viper"  <--- doesn't resolve
    "log"
    "bweidlich/dash"
    "net/http"
    "os"
    "os/exec"
    "time"
)
4

1 に答える 1

5

main.go依存関係をベンダー化するには、ファイルがワークスペース内 (つまり、gopath 内) にある必要があります。テストとして、main.go内部に偽のパスを配置して、ベンダーの dep が見つかるかどうかを確認してください。

$GOPATH/src/
   example.com/
     main.go
   vendor/
     github.com/
       spf13/viper/
       gizak/termui/

一般に、ルート ディレクトリ以外の gopath にコードを格納することは望ましくありませんsrc。つまりgo get、ディレクトリを作成するときに使用する構造をエコーする必要があります。

于 2016-03-21T02:11:21.153 に答える