未解决供应商目录中的依赖关系

Posted

技术标签:

【中文标题】未解决供应商目录中的依赖关系【英文标题】: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?您的项目应位于其导入路径。这里的整体结构是什么? 【参考方案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 在创建目录时将使用的结构。

【讨论】:

以上是关于未解决供应商目录中的依赖关系的主要内容,如果未能解决你的问题,请参考以下文章

我能否在C中创建具有未解决的依赖关系的函数?

Visual Studio 2013 中的 MSM 合并模块:未检测到依赖关系

由于未解决的依赖关系,无法使用 Winforms 控件

公共编解码器的未解决依赖关系

未复制到输出目录的引用的依赖关系

使用 gradle 未解决 aar 库的传递依赖关系