2017-09-14 7 views
-1

Est-ce que quelqu'un a une idée de la raison pour laquelle j'obtiens un _ en face de $ GOPATH et $ GOROOT lorsque j'importe github.com/juju/errors par exemple.Golang ne peut pas trouver/utiliser le dossier du fournisseur

structure repo

-$GOPATH/src/github.com/codelingo/lexicon/vendor 
-$GOPATH/src/github.com/codelingo/lexicon/codelingo/ast/go/src/main.go 
-$GOPATH/src/github.com/codelingo/lexicon/codelingo/ast/go/src/node/node.go 

main.go avec le numéro de ligne

1 package main 
2 
3 import (
4 "encoding/json" 
5 "fmt" 
6 "os" 
7 "strings" 
8 
9 "github.com/juju/errors" 
10 
11 "./key" 
12 "./node" 
13 "./parser" 
14 "./property" 
15 "./util" 
16) 
// rest of main.go 

node.go avec le numéro de ligne

1 package node 
2 
3 import (
4 "encoding/json" 
5 "github.com/juju/errors" 
6 "reflect" 
7) 
//rest of node.go 

$ go run main.go 
node/node.go:5:2: cannot find package "_/home/jzhu/go/src/github.com/codelingo/lexicon/codelingo/ast/go/src/vendor/github.com/juju/errors" in any of: 
    /usr/local/go/src/_/home/jzhu/go/src/github.com/codelingo/lexicon/codelingo/ast/go/src/vendor/github.com/juju/errors (from $GOROOT) 
    /home/jzhu/go/src/_/home/jzhu/go/src/github.com/codelingo/lexicon/codelingo/ast/go/src/vendor/github.com/juju/errors (from $GOPATH) 

Le dossier fournisseur contient les packages ci-dessus et main.go peut utiliser il (par exemple import ("github.com/juju/errors")).

Le dossier fournisseur est sous mon GOPATH de $ (/ home/jzhu/go)

Note: il y a un étrange "_" devant le chemin du package.

Je m'attendais à quelque chose comme suit qui regarde dans l'arbre du vendeur.

vendor/github.com/codelingo/lingo/service/server/service.go:10:2: cannot find package "github.com/codelingo/platform/controller/graphdb/query/result" in any of: 
    /home/jzhu/go/src/github.com/codelingo/platform/vendor/github.com/codelingo/platform/controller/graphdb/query/result (vendor tree) 
    /home/jzhu/go/src/github.com/vendor/github.com/codelingo/platform/controller/graphdb/query/result 
    /usr/local/go/src/github.com/codelingo/platform/controller/graphdb/query/result (from $GOROOT) 
    /home/jzhu/go/src/github.com/codelingo/platform/controller/graphdb/query/result (from $GOPATH) 

Environnement:

$go env 

GOARCH="amd64" 
GOBIN="" 
GOEXE="" 
GOHOSTARCH="amd64" 
GOHOSTOS="linux" 
GOOS="linux" 
GOPATH="/home/jzhu/go" 
GORACE="" 
GOROOT="/usr/local/go" 
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64" 
GCCGO="gccgo" 
CC="gcc" 
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build894537960=/tmp/go-build -gno-record-gcc-switches" 
CXX="g++" 
CGO_ENABLED="1" 
PKG_CONFIG="pkg-config" 
CGO_CFLAGS="-g -O2" 
CGO_CPPFLAGS="" 
CGO_CXXFLAGS="-g -O2" 
CGO_FFLAGS="-g -O2" 
CGO_LDFLAGS="-g -O2" 

$ go version 
go version go1.8.3 linux/amd64 

$ glide --version 
glide version 0.13.0-dev 
+0

s'il vous plaît coller la 5ème ligne de 'noeud/node.go' – ymonad

+0

@ymonad est' ' "github.com/juju/errors" – Junyu

Répondre

0

La solution est d'utiliser le chemin relatif correct pour l'emballage dans l'importation. par exemple import "github.com/codelingo/lexicon/codelingo/ast/go/src/node" au lieu de import "./node" dans main.go

https://github.com/Masterminds/glide/issues/602

+0

Oui, de la go command documentation: "Les programmes Go ne peuvent pas utiliser les chemins d'importation relatifs dans un espace de travail" – JimB