小编典典

如何在 Ubuntu 上设置 GOPATH 环境变量?我必须编辑什么文件?

go

我正在尝试做一个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 值列表如下所示:

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

我看到很多线程都提到了这个错误,但没有一个线程可以回答我的问题,需要编辑哪个文件才能为该路径提供值?


阅读 322

收藏
2021-10-24

共1个答案

小编典典

新方法:Go 模块

从 Go 1.11 开始,您不必再使用 GOPATH。只需转到您的项目目录并执行一次:

go mod init github.com/youruser/yourrepo
  • 有了这个,Go 在该目录中创建了一个模块根。

  • 您可以根据需要创建任意数量的模块。

  • 有关分步说明,另请参阅此答案:

从 Go 1.11+ 开始,不再推荐使用 GOPATH,新的方式是使用 Go Modules。

### 假设您正在编写一个名为 的程序simple

  1. 创建目录:

    sh mkdir simple cd simple

  2. 创建一个新模块:

    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.

  3. 将所有文件放在该目录中。

  4. 最后,运行:

    sh go run .

  5. 或者,您可以通过构建它来创建一个可执行程序:

    ```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,请注意以下几点:

  • 从 Go 1.8 开始,您不需要设置 GOPATH 或 GOROOT。
  • 默认情况下,GOPATH 位于您的用户/主目录下。

从文档

如果未设置 GOPATH,则在 Unix 系统上假定为 $HOME/go,在 Windows 上假定为 %USERPROFILE%\go。如果要使用自定义位置作为工作区,可以设置 GOPATH 环境变量。

旧方式:

只需添加以下几行~/.bashrc,这将持续存在。但是,您可以使用您喜欢的其他路径作为 GOPATH,而不是$HOME/go在我的示例中。

export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
2021-10-24