Не разрешается зависимость в каталоге поставщика

Я запускаю go1.6 и получаю следующую ошибку при запуске «go build» в GOPATH (/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)

Структура проекта:

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"
)

person bjoern    schedule 20.03.2016    source источник
comment
Почему у вас есть bin, pkg и src в каталоге вашего проекта? Ваш проект должен находиться по пути импорта. Какова общая структура здесь?   -  person JimB    schedule 21.03.2016


Ответы (1)


Ваш файл main.go должен находиться внутри рабочей области (то есть внутри gopath), чтобы его зависимости могли быть переданы. В качестве теста попробуйте поместить свой main.go в поддельный путь и посмотреть, найдены ли поставщики deps:

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

Как правило, вы не хотите хранить какой-либо код в своем gopath за пределами его корневого каталога src. То есть вы должны повторить структуру, которую go get использовал бы при создании каталогов.

person djd    schedule 21.03.2016