我想做一个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

当我做一个go env,一个go值列表如下所示:

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没有设置,我该如何设置,在哪里设置?

我看到许多线程提到了这个错误,但没有一个线程提供了我的问题的答案,需要编辑哪个文件来为这个路径提供一个值?


当前回答

您必须根据所使用的终端(bash或zsh)更新PATH。

打开终端shell脚本文件,即~/。Bashrc或~/。ZSHRC编辑器

微,多达/ .zshrc (,) 多达code / .zshrc

如果已经找到,更新下面的GOPATH或添加下面的行。

出口GOPATH = $ HOME /: / $ HOME /项目/走

在这里,你可以添加一个或多个由分号分隔的路径:从系统上GO项目的不同位置到GOPATH环境变量,即/path/1:path/2:path/3等。

在我的例子中,我添加了2个路径,如上所示,一个来自根目录$HOME/go,另一个来自项目目录:/$HOME/projects/go

其他回答

如官方指示所示:

GOPATH环境变量指定工作空间的位置。它默认在你的主目录中有一个名为go的目录,在Unix上是$home/go,在Plan 9上是$home/go,在Windows上是%USERPROFILE%\go(通常是C:\Users\YourName\go)。如果您希望在不同的位置工作,则需要将GOPATH设置为该目录的路径。(另一个常见的设置是设置GOPATH=$HOME。)注意,GOPATH不能与Go安装的路径相同。

例如,如果你在Jetbrains Webstorm中编码(使用Go插件),你可能想要将GOPATH设置为/Users/<user>/WebstormProjects。

简单地说,将其设置为您希望Go项目驻留的任何地方。

如果你设置了任何需要修改环境变量的东西,例如Java, Go等,这将非常熟悉。

我假设你有以下目录结构作为你的Go路径:

\---[folder name]
    +---bin
    +---pkg
    \---src

打开一个新终端 输入sudo nano /etc/environment 找到路径=…在最后一个路径后面加一个冒号:然后粘贴你的完整路径,例如/home/user/gocode

你就完成了,这应该会使它在系统中持久存在。

export GOROOT=/usr/lib/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin

你可以过来看看 $ go env

对于Go 1.13+:

go env -w GOPATH=$HOME/go

要设置GOPATH而不考虑GO版本,在~/.bashrc中添加以下行:

export GOPATH=$HOME/go

不要忘记源你的.bashrc文件:

source ~/.bashrc

在golang官方维基上有更多选项: https://github.com/golang/go/wiki/SettingGOPATH

export PATH=$PATH:$(go env GOPATH)/bin