尝试使用 1.5 版在 go lang 中构建我的项目并打开 GO15VENDOREXPERIMENT="1" 以确保我在本地寻找 vendor 。

我的结构是:

apps_api
   main.go
   build.sh
   src
      controllers
      models
      views
   vendor
      github.com
      golang.org
      .....

build.sh 包含
export GO15VENDOREXPERIMENT="1"
export GOPATH=`pwd`
go build .

Controller 文件示例
import (
    "models"
    "views"

    "github.com/gin-gonic/gin"
)

但是我收到很多错误,说找不到包,请参见下面的示例
src/controllers/app-versions.go:10:2: cannot find package "github.com/asaskevich/govalidator" in any of:
    /Users/ereeve/.gvm/gos/go1.5/src/github.com/asaskevich/govalidator (from $GOROOT)
    /Users/ereeve/Documents/gocode/src/apps_api/src/github.com/asaskevich/govalidator (from $GOPATH)

src/controllers/index.go:4:2: cannot find package "github.com/chnlr/baseurl" in any of:
    /Users/ereeve/.gvm/gos/go1.5/src/github.com/chnlr/baseurl (from $GOROOT)
    /Users/ereeve/Documents/gocode/src/apps_api/src/github.com/chnlr/baseurl (from $GOPATH)

如果我将这些行添加到我的 build.sh 文件中,它将构建,但我不想使用 go get 因为我在我的项目中使用 go 1.5 与本地 vendor 以避免依赖关系。
# go get github.com/gin-gonic/gin
# go get github.com/go-sql-driver/mysql
# go get github.com/rif/cache2go
....

任何想法我做错了什么?

最佳答案

IIRC, GO15VENDOREXPERIMENT 仅当您正在构建的包在 $GOPATH/src 内时才有效,因此设置

export GOPATH=`pwd`

在您的 build.sh 中使其失败。如果你把你的 apps_api 放在里面说 ~/fakegopath/src/ 并运行
env GOPATH="${HOME}/fakegopath/src/" GO15VENDOREXPERIMENT="1" go build .

它应该工作。

关于Golang 1.5 vendor - 找不到包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33034442/

10-13 04:55