GO语言 go get 下载 下来的包存放在哪里

发布于:2025-07-30 ⋅ 阅读:(34) ⋅ 点赞:(0)

在 Go 中,通过 go get(或 Go Modules 下的自动下载)获取的第三方包,具体存储位置取决于你是否启用了 Go Modules(推荐方式)


✅ 1. 如果你使用了 Go Modules(Go 1.11+ 默认开启)

当前 Go 开发强烈建议使用模块管理(Go Modules)

第三方包存放路径:

$GOPATH/pkg/mod/

示例:

~/go/pkg/mod/github.com/gin-gonic/gin@v1.8.1/
  • 下载的每个模块都以 模块名@版本号 形式存储
  • 模块是 只读的,防止污染依赖
  • $GOPATH 默认为 ~/go,除非你手动设置了 GOPATH

查看 GOPATH:

go env GOPATH

✅ 2. 如果你没有启用 Go Modules(旧方式)

不推荐:老项目才用 $GOPATH/src/ 模式

下载的包会被放到:

$GOPATH/src/

示例:

~/go/src/github.com/gin-gonic/gin/

你可以直接看到源码,但这依赖老式的包管理方式,不建议新项目使用。


✅ 快速总结

是否启用 Go Modules 下载目录 示例路径
✅ 是(默认) $GOPATH/pkg/mod ~/go/pkg/mod/github.com/foo/bar@v1.2.3/
❌ 否(老式 GOPATH) $GOPATH/src ~/go/src/github.com/foo/bar/

✅ 查看某个包的位置(直接命令)

go list -m -f '{{.Dir}}' github.com/gin-gonic/gin

输出示例:

/Users/yourname/go/pkg/mod/github.com/gin-gonic/gin@v1.8.1

如你不确定是否在使用 Go Modules,可以检查当前目录下是否有 go.mod 文件。

需要我教你如何管理依赖或清理旧包(类似 npm 的 npm prune)也可以告诉我。

是的,Go 下载的第三方依赖包的存储位置是可以更改的,通过设置环境变量控制。下面分别说明如何更改这两个位置:


✅ 1. 更改 $GOPATH(影响 pkg/mod 和旧式 src/

默认情况下:

$GOPATH 默认为 ~/go

你可以通过设置 GOPATH 来更改下载目录:

✅ Linux / macOS:
export GOPATH=/your/custom/path

你可以把它加进 ~/.bashrc~/.zshrc 中:

export GOPATH=$HOME/dev/go
✅ Windows (PowerShell):
$env:GOPATH = "D:\GoWorkspace"

或者设置系统环境变量。

更改后:

  • 下载的依赖包将放在:

    $GOPATH/pkg/mod/
    
  • 你的项目默认也会找 $GOPATH/pkg/mod 作为模块缓存路径。


✅ 2. 更改 Go Module 缓存目录(不建议改,但可以

如果你只想更改 Go Module 缓存位置,而不想影响整个 GOPATH,也可以设置:
GOMODCACHE

export GOMODCACHE=/your/custom/modcache

默认是:

$GOPATH/pkg/mod

设置后,模块缓存目录变为你自定义的位置。


✅ 3. 查看当前设置:

go env GOPATH
go env GOMODCACHE

✅ 示例:完整更改方式

export GOPATH=$HOME/my-go
export GOMODCACHE=$HOME/my-go-modcache

🚫 注意事项

  • 不建议把 Go 模块缓存放在项目目录里,避免污染或版本冲突。
  • 如果你修改了 GOPATH,请确保你在使用 go installgo build 等时也在一个有效的 Go 项目内。

是否需要我为你生成一个包含自定义 GOPATH 的项目初始化脚本?比如自动设置环境变量和初始化 go.mod


网站公告

今日签到

点亮在社区的每一天
去签到