最新消息:yaf表单扩展中新增加了浮点数、日期和集合的校验。php yaf框架扩展实践三——表单

golang包管理工具godep save无效的坑

Golang 1491浏览 0评论

参照官方的方式下载安装完godep后,做了一个测试目录,测试目录结构如下:

godeptest
   |- main.go

main.go内容如下:

package main

import (
	"gopkg.in/mgo.v2"
)

func main() {

}

我琢磨着在项目目录下使用godep save命令,应当就会自动在当前目录下生成Godeps目录,并且把labix.org/v2/mgo这个库拷贝到其中的_workspace目录下。

$ godep save -r ./...

没有输出提示信息,应该是成功了,查看下目录信息

godep测试目录结构

godep测试目录结构

有生成Godeps目录,但是_workspace下并没有项目库文件,好奇怪啊,也没有报错。

google搜索了下godeps save not work,没有找到有价值的信息,于是去翻了下源码,看到save这个有help信息,可以用-d, -v打印出相应的调试信息。

$ godep save -r -d -v ./...
这里会输出一堆调试信息...

仔细看了这些信息,发现有一个Done Looking For Package的调试信息,从调试信息来看是在源码文件中没有找到对应的依赖库,也就是上面的labix.org/v2/mgo没有被找到,没有找到自然不会自动去拷贝,也没有报错信息。Godeps.json的内容就是这样:

{
	"ImportPath": ".",
	"GoVersion": "go1.5",
	"Packages": [
		"./..."
	],
	"Deps": []
}

太蛋疼了,这个是啥子问题呢!各种搜索引擎乱翻,看到一篇关于godep save版本库没有设置的问题:

godep: directory "/Users/tony/Test/GoToolsProjects/src" is not using a known version control system
godep: error loading dependencies

我依照该篇文章去测试,一切目录命名都是照搬,发现解决了版本库问题后居然就可以了。

我仔细对比了前面自己的方式和该篇的方式区别,发现该篇文章是的目录是在GOPATH的src目录下,而我前面测试的目录是在自己的code代码里,不在GOPATH的src下。想到这里我立马进行了测试,我把前面的测试目录拷贝到GOPATH的src下,再次执行godep save -r ./…就可以了。

最后总结一下这个问题是由于代码目录没有在GOPATH/src目录下造成的。

这个好大的一坑啊,我自己的习惯是GOPATH的目录只用来存放go get的代码库。其它的开发项目都是放在不同的目录下。这个不知道算不算是godep的一个bug呢?

参考文章:godep的一个“坑”

转载请注明:快乐编程 » golang包管理工具godep save无效的坑

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址