Go 为什么可以';不能从绝对路径构建?

Go 为什么可以';不能从绝对路径构建?,go,Go,出于某种原因,我想从源代码构建一个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/git

出于某种原因,我想从源代码构建一个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
安装$GOPATH/src/github.com/docker/swarm
错误:无法加载程序包:
package/src/github.com/docker/swarm:
导入“/src/github.com/docker/swarm”:
无法导入绝对路径

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

JimB是正确的,包是相对于导入路径的。没有“绝对”导入的功能

虽然规范中没有明确说明,但在以下方面确实提到了它:

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


在相对导入和销售方面有一些变化可能适合您(请参见GO 1.5销售实验,现在在1.6中提供)

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

所以我想我会分享:

从包目录中运行:

cd $GOPATH/src/github.com/docker/swarm
go install .
作为相对回购:

go install github.com/docker/swarm

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

包由导入路径引用,go工具与包一起工作。