2016-05-13 68 views
4

出於某種原因,我想從official doc之後的源代碼構建一個go project(docker swarm)。爲什麼不能從絕對路徑構建?

它運作良好,如果我這樣做:

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

但是,如果我嘗試「單行」,並避免cd失敗:

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 

爲什麼不能去處理這個絕對路徑?

+2

是否解決是通過導入路徑引用,並在旅途中的工具包帶工作。 – JimB

回答

3

JimB是正確的,軟件包是相對於導入路徑。沒有能力導入'絕對'。

雖然不能在規範規定了具體而言,它確實暗示它在https://golang.org/ref/spec#ImportPath

的ImportPath的解釋是依賴於實現的,但它通常是完整的文件名的子串編譯的軟件包並可能與已安裝軟件包的存儲庫有關。

上有相對的進口,並可能爲你工作vendoring變化(見GO 1.5 vendoring實驗,現在在1.6 https://docs.google.com/document/d/1Bz5-UB7g2uPBdOx-rw5t9MxJwkfpx90cqG9AFL0JAYo/edit?pref=2&pli=1可用)

相關問題