project.go:6:2: cannot find package "example.com/project/package" in any of:
/usr/local/Cellar/go/1.1.2/libexec/src/pkg/example.com/project/package (from $GOROOT)
/Users/me/go/src/example.com/project/package (from $GOPATH)
Fetching https://example.com/project/package?go-get=1
ignoring https fetch with status code 404 Fetching http://example.com/project/package?go-get=1
Parsing meta tags from http://example.com/project/package?go-get=1 (status code 404)
import "example.com/project/package": parse http://example.com/project/package?go-get=1: no go-import meta tags
package example.com/project/package: unrecognized import path "example.com/project/package"
为什么不能去/ build找到本地包。我明白go get会因为它的存在而失败,因为它是裸的,但似乎go get完全忽略了本地文件,迫使我提交并推送我的代码然后才能编译它。根据片段,这是通过brew安装的OSX 10.8和Go 1.1.2。 GOPATH设置为/ Users / me / go,GOROOT为空。
我应该注意在我的Windows机器上使用go get gitbash时根本没有这个问题。我已经尝试了所有我想到的谷歌搜索这个,但是每个人都声称你可以使用相对的“项目/包”导入,在这种情况下也完全失败。
答案 0 :(得分:3)
从go1.1.2升级到go1.2到brew upgrade go
解决了这个问题
答案 1 :(得分:2)
您可以在本地处理代码而无需推送它 - 您只需要使用文件夹结构来模仿导入路径。
将您的库代码放在src/
目录中,文件夹结构模仿导入路径:
[15:42] foa:home $ tree
.
├── myprogram.go
└── src
└── example.com
└── project
└── mypackage
└── mypackage.go
然后将GOPATH设置为其中包含src/
的目录,您将能够构建项目:
[15:42] foa:home $ export GOPATH=`pwd`
[15:42] foa:home $ go build
这是myprogram.go
:
package main
import "example.com/project/mypackage"
func main() {
mypackage.Run()
}
mypackage.go
:
package mypackage
import "fmt"
func Run() {
fmt.Println("It works.")
}
通常像这样布置你的工作目录,然后在最低级别(例如在src/example.com/project/mypackage
)中根据实际的git存储库,以便它们与go get
和{{1}一起干净地工作}对于其他用户。