5

我知道应该避免本地进口,但在这种情况下需要特殊情况。go get ./...这是一个私人仓库,由于服务器上缺少私钥,heroku buildpack 在与绝对网址一起使用时会在该阶段失败。

现在我得到这个错误local import ".." in non-local package

所有导入路径都更改为本地版本,那么还有什么可以将包限定为“非本地”?我该如何解决?

4

3 回答 3

5

我修好了它。问题是根包位于$GOPATH/src/<host>/<user>/<package>. 一旦我将包移动到~/Git/<package>错误就消失了(因此,“使其成为本地”)。

于 2013-02-04T11:17:11.577 回答
0

彼得索是对的。查看生成该错误消息的代码,如果正在加载的包没有以 / ./ 或 ../ 开头,但它导入了一个这样的包,就会发生这种情况。在您的问题的情况下,有几件事可能导致它。

  1. go get 导致使用非本地路径引用的依赖包被构建,然后依次加载本地路径。
  2. 您将获得一个包含本地导入的非本地包路径。

我认为也许您应该只修复服务器上丢失的私钥问题,而不是尝试使用本地路径。

为了正确调试,我需要知道你得到了哪些包,以及它们的传递依赖是什么。

最后一件事你为什么使用 go get 进行本地路径安装(即。go get ./...)?在这种情况下,go install 或 go build 通常是您想要的。

于 2013-02-04T04:32:42.823 回答
-1

本地包导入路径是绝对文件系统路径或以 ./ 或 ../ 开头的路径。非本地包导入路径不是本地包导入路径。

cmd/go/pkg.go

于 2013-02-04T01:45:42.327 回答