
glide 将依赖注入项目 vendor 目录,但只有当项目位于 $gopath/src 下的标准 go 路径(如 github.com/username/projectname)时,go 构建工具才能正确定位并使用这些依赖。
glide 将依赖注入项目 vendor 目录,但只有当项目位于 $gopath/src 下的标准 go 路径(如 github.com/username/projectname)时,go 构建工具才能正确定位并使用这些依赖。
在 Go 1.7+ 中,vendor 机制原生支持——但其生效前提是:vendor 目录必须位于当前包的源码根路径下,且该路径需严格符合 Go 的导入路径规范。Glide 并不将依赖安装到全局 $GOPATH/vendor(这是常见误解),而是将 vendor/ 目录创建在当前项目的源码根目录内,即 $GOPATH/src/<import-path>/vendor</import-path>。
✅ 正确操作流程如下:
-
确保项目路径合规
将你的项目克隆或初始化在标准 Go 工作区路径中:mkdir -p $GOPATH/src/github.com/yourname/yourproject cd $GOPATH/src/github.com/yourname/yourproject
-
初始化 Glide 配置
在该目录下运行:glide init
此命令生成
glide.yaml(位于项目根目录),后续glide install或glide update均以此为基准。 -
安装依赖
glide install
→ Glide 自动在当前目录(即
$GOPATH/src/github.com/yourname/yourproject)下创建vendor/子目录,并将所有依赖按其导入路径解压至vendor/内对应位置(如vendor/github.com/sirupsen/logrus/)。 -
构建验证
在同一目录下执行:go build # 或 go run main.go
Go 编译器会自动识别同级
vendor/目录,并优先从中解析 import 路径(遵循 vendor spec),无需额外参数或环境变量。
⚠️ 注意事项:
- ❌ 不要在
$GOPATH根目录或任意非src/<import-path></import-path>路径下运行glide init—— 否则vendor/位置错误,go build将无法找到依赖; - ❌ 不要手动将
vendor/移动到$GOPATH/vendor—— Go 不支持全局 vendor(仅支持 per-module vendor); - ✅ 推荐搭配
go mod迁移:Glide 已停止维护,新项目建议直接使用 Go Modules(go mod init),它摆脱了$GOPATH限制,路径更灵活、语义更清晰。
总结:Glide 的“魔法”不在路径重定向,而在严格遵循 Go 的源码布局约定。你的项目在哪,vendor 就在哪;而 Go 只认“项目在哪”——这由 $GOPATH/src/ 下的完整导入路径决定。

















