
在 Windows 环境下,go install $(glide nv) 命令因 Shell 语法差异无法直接运行;需改用 PowerShell(而非 CMD 或 Git Bash),并确保当前目录为项目根路径,才能正确解析 $(glide nv) 为待安装的主包列表。
在 windows 环境下,`go install $(glide nv)` 命令因 shell 语法差异无法直接运行;需改用 powershell(而非 cmd 或 git bash),并确保当前 directory 为项目根路径,才能正确解析 `$(glide nv)` 为待安装的主包列表。
Windows 默认命令行工具(CMD)和多数 Git Bash 环境不支持 $() 命令替换语法,因此当你执行 go install $(glide nv) 时,Shell 并未调用 glide nv 获取包名,而是将字面量 $(glide nv) 当作包路径传给 go install,导致 Go 工具链尝试查找名为 $(glide 和 nv) 的非法包路径,从而报出“cannot find package”错误。
✅ 正确做法:使用 PowerShell(Windows 自带,无需额外安装),并在项目根目录(即包含 glide.yaml 的目录)下执行:
go install $(glide nv)
?
glide nv(即 “non-vendor”)会输出所有非 vendor 目录下的 main 包导入路径(如my/project/cmd/app、my/project/cmd/tool),$(...)在 PowerShell 中会将其作为参数列表注入go install,等效于:go install my/project/cmd/app my/project/cmd/tool
⚠️ 注意事项:
- ❌ 不要在 CMD 中运行该命令(无命令替换能力);
- ❌ 不要在 Git Bash 中直接使用
$()—— 虽然 Bash 支持,但 Windows 下的 Git Bash 可能因路径/转义问题导致glide nv输出异常(如换行符、空格未正确分隔); - ✅ 推荐验证
glide nv输出是否符合预期:先单独运行glide nv,确认每行均为有效的 Go 包路径(以$GOPATH/src/下相对路径或模块路径形式); - ✅ 确保已执行
glide install成功,且 vendor 依赖就绪; - ? 若项目已迁移到 Go Modules(Go 1.11+),建议弃用 Glide(已归档),改用
go install ./cmd/...或go build -o bin/ ./cmd/*等现代方式。
总结:该问题本质是 Shell 兼容性问题,而非 Glide 或 Go 配置错误。切换至 PowerShell 即可解决,并借此机会评估是否升级至 Go Modules 生态以获得长期维护保障。


















