【问题标题】:Not resolving dependency in vendor directory未解决供应商目录中的依赖关系
【发布时间】:2016-07-07 07:10:59
【问题描述】:

我正在运行 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"
)

【问题讨论】:

  • 为什么你的项目目录中有binpkgsrc?您的项目应位于其导入路径。这里的整体结构是什么?

标签: go vendor glide-golang


【解决方案1】:

您的 main.go 文件需要位于工作空间内(即在 gopath 内),才能出售其依赖项。作为测试,请尝试将您的 main.go 放入虚假路径中,看看是否找到了 vendored deps:

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

一般来说,您不希望在 gopath 根 src 目录之外存储任何代码。也就是说,您应该回显go get 在创建目录时将使用的结构。

【讨论】:

    猜你喜欢
    • 2016-06-04
    • 1970-01-01
    • 2013-10-27
    • 1970-01-01
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多