2016-05-13 10 views
4

Aus irgendeinem Grund möchte ich ein Go-Projekt (Docker-Schwarm) aus der Quelle nach der official doc erstellen.Warum kann nicht vom absoluten Pfad gebaut werden?

Es funktioniert gut, wenn ich tun:

... 
cd $GOPATH/src/github.com/docker/swarm 
go install . 

Aber es schlägt fehl, wenn ich versuche, "one-line" es und cd vermeiden:

go install $GOPATH/src/github.com/docker/swarm 

ERROR: can't load package: 
package <my go path>/src/github.com/docker/swarm: 
import "<my go path>/src/github.com/docker/swarm": 
cannot import absolute path 

Warum nicht mit diesem gehen kann beschäftigen absoluter Pfad?

+2

packes durch Importpfad referenziert werden, und die Go-Tools arbeiten mit Paketen. – JimB

Antwort

3

JimB ist korrekt, Pakete sind relativ zum Importpfad. Es gibt keine Möglichkeit, absolut zu importieren.

Während es nicht ausgeschrieben ist speziell in der Spezifikation, ist es darauf anspielen bei https://golang.org/ref/spec#ImportPath:

Die Interpretation der ImportPath ist abhängig von der Implementierung, aber es ist in der Regel ein Teil der vollständigen Dateinamen das kompilierte Paket und kann relativ zu einem Repository von installierten Paketen sein. (Siehe GO 1.5 vendoring Experiment, jetzt in 1,6 https://docs.google.com/document/d/1Bz5-UB7g2uPBdOx-rw5t9MxJwkfpx90cqG9AFL0JAYo/edit?pref=2&pli=1)

Es gibt Variationen bezüglich Import und vendoring, die für Sie arbeiten könnte

Verwandte Themen