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

出于某种原因,我想按照官方文档从源代码构建一个 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

为什么不能去处理这条绝对路径?


心有法竹
浏览 179回答 2
2回答

慕斯王

JimB 是正确的,包是相对于导入路径的。没有“绝对”导入的能力。虽然规范中没有具体说明,但它确实在https://golang.org/ref/spec#ImportPath中提到了它:ImportPath 的解释取决于实现,但它通常是已编译包的完整文件名的子字符串,并且可能与已安装包的存储库相关。相对导入和销售可能对您有用(请参阅 GO 1.5 销售实验,现在在 1.6 中可用https://docs.google.com/document/d/1Bz5-UB7g2uPBdOx-rw5t9MxJwkfpx90cqG9AFL0JAYo/edit?pref=2&pli= 1&nbsp;)

繁花不似锦

我来这里是为了找到同一个问题的答案,因为我在做同样的事情,发现有两种方法可以做到这一点......所以我想我会分享:从包目录中运行:cd&nbsp;$GOPATH/src/github.com/docker/swarmgo&nbsp;install&nbsp;.并作为相对回购:go&nbsp;install&nbsp;github.com/docker/swarm有官方文档去一些细节在这里。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go