Golang无法找到/使​​用供应商文件夹

问题描述:

有没有人知道为什么我在导入github.com/juju/errors时例如在$ GOPATH和$ GOROOT前面获得_Golang无法找到/使​​用供应商文件夹

回购结构

-$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行号

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行号

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) 

供应商文件夹包含上述包和main.go可以使用它(例如import ("github.com/juju/errors"))。

供应商的文件夹下的是我的$ GOPATH(/家/ jzhu/GO)

注:有一个奇怪的 “_” 在包路径的前面。

我期待着看看供应商树中的以下内容。

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) 

环境:

$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

请贴节点/ node.go' – ymonad

+0

@ymonad的'5日线是' “github.com/juju/errors”' – Junyu

的解决方案是使用正确的相对路径来包装在进口。 如import "github.com/codelingo/lexicon/codelingo/ast/go/src/node",而不是import "./node"main.go

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

+0

是,从go命令文档:“Go程序不能在工作空间内使用相对导入路径” – JimB