5

現地からの輸入は避けるべきであることは承知していますが、この場合、特別な状況が必要です。go get ./...これはプライベート リポジトリであり、絶対 URL で使用すると、サーバーに秘密キーがないため、heroku ビルドパックがフェーズで失敗します。

今、私はこのエラーを受け取ります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. ローカル インポートを含む非ローカル パッケージ パスを取得しようとしています。

おそらく、ローカル パスを使用しようとするのではなく、サーバー上で不足している秘密鍵の問題を修正する必要があると思います。

適切にデバッグするには、取得したパッケージとその推移的な依存関係を正確に知る必要があります。

最後にもう 1 つ、なぜローカル パスのインストールに 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 に答える