2016-03-20 19 views
6

Io corro go1.6 e sto ottenendo il seguente errore durante l'esecuzione di "andare a costruire" in GOPATH (/ Users/bweidlich/Progetti/go)Non risolvere la dipendenza nella cartella vendor

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) 

Struttura del progetto:

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

Perché avete 'bin',' pkg' e 'src' nella directory del progetto? Il tuo progetto dovrebbe trovarsi nel suo percorso di importazione. Qual è la struttura generale qui? – JimB

risposta

5

Il file main.go ha bisogno di essere all'interno di uno spazio di lavoro (cioè, ins ide gopath) perché le sue dipendenze vengano vendute. Come prova, prova mettendo il vostro main.go all'interno di un percorso di falso e vedere se si trovano le dipendenze vendored:

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

In generale, non si vuole memorizzare qualsiasi codice nel tuo gopath di fuori della sua directory root src. Cioè, dovresti echo la struttura che go get userebbe durante la creazione delle directory.

Problemi correlati