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

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


当前回答

在终端中编写这段代码。

export GOPATH=path/to/your/gopath/directory

注意:这将在每次新的终端窗口或系统重新启动时重置。

要持久,请根据shell将下面的代码粘贴到.zshrc或.bashrc文件中。这些文件在您的主目录。如下图所示。

export PATH=path/to/some/other/place/composer/for/example
export GOPATH=path/to/your/gopath/directory
export PATH=$PATH:$GOPATH/bin

其他回答

还有另一个解决方案:从GO env中导出每个GO*环境变量

.bashrc:

eval $(go env | grep '^GO[A-Z0-9_]*=' | while read setenv; do
  echo "export $setenv; "
done 2> /dev/null)

[[ -n $GOPATH ]] || export GOPATH="$HOME/go/bin"
[[ -n $GOROOT ]] || export GOROOT=/usr/bin/go
export PATH="$PATH:$GOPATH/bin:$GOROOT/bin"

在我的Fedora 20机器上,我在~/.bashrc中添加了以下行:

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

你可以过来看看 $ go env

您必须根据所使用的终端(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

使用Go 1.8(2017年第二季度),如果你接受默认的GOPATH值(为你设置),你就不必编辑任何文件

$HOME/go

您可以看到问题17262的评论和相关的推特投票:

通过选择默认的GOPATH,我们可以使我们的文档更容易,因为我们可以这样说

$ go get github.com/foo/bar

将检查github.com/foo/bar回购到$HOME/go/src/github.com/foo/bar。 我们不需要用设置env变量来分散新人的注意力,我们所需要做的就是在页面底部放一个小圆括号 $HOME/go是go工作区的默认路径。 如果要更改此路径,请将GOPATH变量设置为您所选择的值。