我知道应该避免本地进口,但在这种情况下需要特殊情况。go get ./...
这是一个私人仓库,由于服务器上缺少私钥,heroku buildpack 在与绝对网址一起使用时会在该阶段失败。
现在我得到这个错误local import ".." in non-local package
。
所有导入路径都更改为本地版本,那么还有什么可以将包限定为“非本地”?我该如何解决?
我修好了它。问题是根包位于$GOPATH/src/<host>/<user>/<package>
. 一旦我将包移动到~/Git/<package>
错误就消失了(因此,“使其成为本地”)。
彼得索是对的。查看生成该错误消息的代码,如果正在加载的包没有以 / ./ 或 ../ 开头,但它导入了一个这样的包,就会发生这种情况。在您的问题的情况下,有几件事可能导致它。
我认为也许您应该只修复服务器上丢失的私钥问题,而不是尝试使用本地路径。
为了正确调试,我需要知道你得到了哪些包,以及它们的传递依赖是什么。
最后一件事你为什么使用 go get 进行本地路径安装(即。go get ./...
)?在这种情况下,go install 或 go build 通常是您想要的。
本地包导入路径是绝对文件系统路径或以 ./ 或 ../ 开头的路径。非本地包导入路径不是本地包导入路径。