为什么不能从绝对路径构建?

时间:2016-05-13 20:34:10

标签: go

出于某种原因,我想在official doc之后从源代码构建一个go项目(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 个答案:

答案 0 :(得分:5)

JimB是正确的,包是相对于导入路径。没有能力绝对导入&#39;。

虽然规范中没有具体说明,但它确实在https://golang.org/ref/spec#ImportPath暗示了它:

  

ImportPath的解释依赖于实现,但它通常是已编译包的完整文件名的子字符串,可能与已安装包的存储库相关。

可能适用于您的相对导入和销售的变化(请参阅GO 1.5 vendoring实验,现在可在1.6 https://docs.google.com/document/d/1Bz5-UB7g2uPBdOx-rw5t9MxJwkfpx90cqG9AFL0JAYo/edit?pref=2&pli=1中找到)

答案 1 :(得分:2)

我来到这里寻找同一问题的答案,因为我做了同样的事情,发现有两种方法可以做到这一点......

所以我想我会分享:

从包目录中运行:

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

并作为亲戚回复:

go install github.com/docker/swarm

官方go文档here中有一些详细信息。