英文:
Golang 1.5 vendors - Cannot find package
问题
尝试使用Go语言版本1.5构建我的项目,打开GO15VENDOREXPERIMENT="1"
以确保在本地查找供应商。
我的项目结构如下:
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 .
控制器文件示例:
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来避免依赖项。
# go get github.com/gin-gonic/gin
# go get github.com/go-sql-driver/mysql
# go get github.com/rif/cache2go
....
有任何想法我做错了什么吗?
英文:
Trying to build my project in go lang using version 1.5 with GO15VENDOREXPERIMENT="1"
turned on to ensure I look for the vendors locally.
My structure is:
apps_api
main.go
build.sh
src
controllers
models
views
vendor
github.com
golang.org
.....
build.sh contains
export GO15VENDOREXPERIMENT="1"
export GOPATH=`pwd`
go build .
controller file example
import (
"models"
"views"
"github.com/gin-gonic/gin"
)
But i get lots of errors saying package not found see below for exmaple
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)
If i add these lines into my build.sh file it will build, but I don't want to use go get because I am using go 1.5 with the vendors locally inside my project to avoid dependancies.
# go get github.com/gin-gonic/gin
# go get github.com/go-sql-driver/mysql
# go get github.com/rif/cache2go
....
Any ideas what I am doing wrong?
答案1
得分: 9
如果我没记错的话,GO15VENDOREXPERIMENT
只会在你构建的包位于 $GOPATH/src
目录下时才起作用,所以在你的 build.sh
中设置
export GOPATH=`pwd`
会导致它失败。如果你将你的 apps_api
放在 ~/fakegopath/src/
目录下,并运行
env GOPATH="${HOME}/fakegopath/src/" GO15VENDOREXPERIMENT="1" go build .
它应该可以工作。
英文:
IIRC, GO15VENDOREXPERIMENT
will work only if the package you're building is inside $GOPATH/src
, so setting
export GOPATH=`pwd`
in your build.sh
makes it fail. If you put your apps_api
inside say ~/fakegopath/src/
and run
env GOPATH="${HOME}/fakegopath/src/" GO15VENDOREXPERIMENT="1" go build .
it should work.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论