我正在尝试做一个go get:
go get
go get github.com/go-sql-driver/mysql
它失败并出现以下错误:
package github.com/go-sql-driver/mysql: cannot download, $GOPATH not set. For more details see: go help gopath
当我执行 a 时go env,Go 值列表如下所示:
go env
ubuntu@ip-xxx-x-xx-x:~$ go env GOARCH="amd64" GOBIN="" GOCHAR="6" GOEXE="" GOHOSTARCH="amd64" GOHOSTOS="linux" GOOS="linux" GOPATH="" GORACE="" GOROOT="/usr/lib/go" GOTOOLDIR="/usr/lib/go/pkg/tool/linux_amd64" CC="gcc" GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread" CGO_ENABLED="1"
显然 GOPATH 没有设置,我应该如何以及在哪里设置它?
我看到很多线程都提到了这个错误,但没有一个线程可以回答我的问题,需要编辑哪个文件才能为该路径提供值?
从 Go 1.11 开始,您不必再使用 GOPATH。只需转到您的项目目录并执行一次:
go mod init github.com/youruser/yourrepo
有了这个,Go 在该目录中创建了一个模块根。
您可以根据需要创建任意数量的模块。
有关分步说明,另请参阅此答案:
从 Go 1.11+ 开始,不再推荐使用 GOPATH,新的方式是使用 Go Modules。
### 假设您正在编写一个名为 的程序simple:
simple
创建目录:
sh mkdir simple cd simple
创建一个新模块:
sh go mod init github.com/username/simple # Here, the module name is: github.com/username/simple. # You're free to choose any module name. # It doesn't matter as long as it's unique. # It's better to be a URL: so it can be go-gettable.
将所有文件放在该目录中。
最后,运行:
sh go run .
或者,您可以通过构建它来创建一个可执行程序:
```sh go build .
# then: ./simple # if you’re on xnix
# or, just: simple # if you’re on Windows ```
有关更多信息,您可以阅读此。
从 1.11 开始,Go 已经包含了对版本模块的支持,正如这里提出的那样。最初的原型 vgo 于 2018 年 2 月发布。 2018 年 7 月,版本化模块登陆 Go 主存储库。在 Go 1.14 中,模块支持被认为可以用于生产,并鼓励所有用户从其他依赖管理系统迁移到模块。
如果您坚持使用 GOPATH,请注意以下几点:
从文档:
如果未设置 GOPATH,则在 Unix 系统上假定为 $HOME/go,在 Windows 上假定为 %USERPROFILE%\go。如果要使用自定义位置作为工作区,可以设置 GOPATH 环境变量。
旧方式:
只需添加以下几行~/.bashrc,这将持续存在。但是,您可以使用您喜欢的其他路径作为 GOPATH,而不是$HOME/go在我的示例中。
~/.bashrc
$HOME/go
export GOPATH=$HOME/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin