2013-02-04 26 views
4

我知道本地進口應避免,但在這種情況下,特殊情況下需要它。這是一個私人回購,並且由於在服務器上丟失了私鑰,當與絕對URL一起使用時,heroku buildpack在go get ./...階段失敗。本地進口非本地包裝

現在我得到這個錯誤local import ".." in non-local package

所有導入路徑都已更改爲本地版本,那麼仍然可以將包限定爲「非本地」?我該如何解決?

回答

4

我修好了。問題是根包在$GOPATH/src/<host>/<user>/<package>。只要我將包裝移動到~/Git/<package>,錯誤就消失了(因此,「使其成爲本地」)。

1

本地程序包導入路徑是以./或../開頭的絕對文件系統路徑或一個 。非本地程序包導入路徑不是 本地程序包導入路徑。

cmd/go/pkg.go

+0

不回答問題。我們不是在談論非本地導入路徑,而是包。 –

+0

導入路徑指定要導入的包。 – peterSO

+0

我知道,但那不是問題。 –

0

peterSo是正確的。查看產生錯誤消息的代碼,如果被加載的包不是以/ ./或../開頭,而是導入了一個。在你的問題的情況下,有幾件事情可能導致它。

  1. go get導致依賴包引用非本地路徑被構建,然後依次加載本地路徑。
  2. 您將獲取包含本地導入的非本地包路徑。

我想也許你應該只修復服務器上丟失的私鑰問題,而不是嘗試使用本地路徑。

爲了正確調試,我需要知道你正在獲取什麼包以及它們的傳遞依賴關係是什麼。

爲什麼你使用的最後一件事去獲得本地路徑安裝(即go get ./...)?去安裝或去建立通常是你想要的那種情況。

+0

'go get'步驟是由buildpack完成的,而不是我。我想我只會嘗試添加私鑰,似乎更容易。 –