不解析供应商目录中的依赖关系

bjo*_*ern 6 go vendor glide-golang

我正在运行go1.6并在GOPATH中运行"go build"时遇到跟随错误(/ Users/bweidlich/Projects/go)

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)
Run Code Online (Sandbox Code Playgroud)

项目结构:

bin/
glide.lock
glide.yaml
go.iml
logs/
main.go
pkg/
src/
vendor/
      github.com/
                 deckarep/gosx-notifier
                 spf13/viper
                 gizak/termui
Run Code Online (Sandbox Code Playgroud)

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"
)
Run Code Online (Sandbox Code Playgroud)

djd*_*djd 5

您的main.go文件需要位于工作区内(即gopath内部),以便销售其依赖项.作为测试,尝试将您的main.go内部放入假路径并查看是否找到了已售出的deps:

$GOPATH/src/
   example.com/
     main.go
   vendor/
     github.com/
       spf13/viper/
       gizak/termui/
Run Code Online (Sandbox Code Playgroud)

通常,您不希望在其根src目录之外的gopath中存储任何代码.也就是说,您应该回显go get创建目录时使用的结构.