出于某种原因,我想在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
为什么不能处理这条绝对路径?
答案 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中有一些详细信息。