如何在 Mac OS X 10.10 中设置 GOPATH

How to set GOPATH in Mac OS X 10.10

我在 Mac OS X 中安装了 Go 1.4。之前我有 Go 1.0。我设置 GOROOT 和 PATH 如下,

Dineshs-MacBook-Air:go-cassandra Dany$ which go
/usr/local/go/bin/go
Dineshs-MacBook-Air:go-cassandra Dany$ export GOROOT=/usr/local/go/bin/go
Dineshs-MacBook-Air:go-cassandra Dany$ export PATH=$PATH:$GOROOT/bin 

Go 安装在“/usr/local/go/bin/go”中。我将 GOPATH 设置为我的项目 src 目录。我能够 运行 在我的目录中编写代码。但是当我尝试安装 gocql 时出现错误。

Dineshs-MacBook-Air:go-cassandra Dany$ sudo go get github.com/gocql/gocql
package github.com/gocql/gocql: cannot download, $GOPATH not set. For more details see: go help gopath

谁能帮我解决这个问题?谢谢

编辑 1: @VonC 我也尝试了其他选项。我把GOROOT改成了安装go的目录。但这没有帮助。我更改了 GOPATH。

Dineshs-MacBook-Air:go-cassandra Dany$ export GOROOT=/usr/local/go
Dineshs-MacBook-Air:go-cassandra Dany$ export PATH=$PATH:$GOROOT/bin
Dineshs-MacBook-Air:go-cassandra Dany$ export GOPATH=/Users/Dany/Documents/FALL-2013-COURSES/Imp_Data_structures/workspace/go-cassandra
Dineshs-MacBook-Air:go-cassandra Dany$ sudo go get github.com/gocql/gocql
Password:
package github.com/gocql/gocql: cannot download, $GOPATH not set. For more details see: go help gopath
Dineshs-MacBook-Air:go-cassandra Dany$ echo $GOPATH
/Users/Dany/Documents/FALL-2013-COURSES/Imp_Data_structures/workspace/go-cassandra
Dineshs-MacBook-Air:go-cassandra Dany$ ls
bin pkg src
Dineshs-MacBook-Air:go-cassandra Dany$

备注:

GOROOT 应该引用一个文件夹(go 的安装位置),而不是 go 可执行文件本身

export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin 

正如 Dave 在评论中提到的那样,您根本不必设置 GOROOT
见文章 You don’t need to set GOROOT, really.

GOPATH 应该引用一个文件夹,您可以在该文件夹下找到 srcpkgbin。 (它不应该直接引用 src 文件夹):
参见“How to Write Go Code - Workspace

关于 GOPATH:

  • 尝试在您的 ~/.bashrc 中设置它(使用 export)。
  • 检查您当前的 shell 是 bash(而不是 fish 之类的另一个)
  • 检查 go env.
  • 的输出

不要执行 sudo go get,因为用于 sudo (root) 的环境变量与当前用户不同:

go get github.com/gocql/gocql

(或you would need to do a sudo -E bash -c 'go get github.com/gocql/gocql',但我怀疑你在这里不需要root

sudo caveat:

Any variables added to these locations will not be reflected when invoking them with a sudo command, as sudo has a default policy of resetting the Environment and setting a secure path (this behavior is defined in /etc/sudoers)

我在 MacOS 中设置 GOROOT 和 GOPATH 时遇到很多问题,唯一对我有用的解决方案是以下一个:

如果您使用 Oh My Zsh ~/.zshrc

,请将以下代码添加到您的 ~/.bashrc~/.profile
export GOPATH=$HOME/go
export GOROOT=/usr/local/go

之后,运行 在您的终端中输入以下命令:

source ~/.profile

如果您有任何不同的 shell,请将其替换为 .profile

信息: $HOME 变量将指向您当前用户的目录。

信息 2: /usr/local/go 是所有用户、go 文件和 bin 文件夹所在的位置。

将自定义 GOPATH 设置为工作目录:

要将您的 GoLang 项目存储在不同的文件夹中,您可以设置自定义路径。这是我的自定义 GOPATH,它指向我的 admin/Documents 文件夹中的 goWorkSpace 文件夹。

export GOPATH=$HOME/Documents/goWorkSpace

您需要告知前往您工作区的位置。在这个例子中,我们将使用 $HOME/dev/go-workspace.

然后你需要知道你的 mac 是否有 zsh 或 bash 配置为 shell.

The file ~/.zshrc is used for zsh shell. The zsh shell was introduced in OS Big Sur.

The ~/.bashrc is the bash shell used in previews OS version, the same for linux users.

1:添加这些行以在您的 ~/.zsh 或 ~./bashrc 中导出所需的变量,具体取决于您的 shell.

https://golang.org/doc/install

下载的原始 pkg 安装
export GOPATH=$HOME/dev/go-workspace
export GOROOT=/usr/local/go
export PATH=$PATH:$GOPATH/bin
export PATH=$PATH:$GOROOT/bin

对于从 home brew 安装的 Go。 (brew 更新和 brew 安装 golang)

export GOPATH=$HOME/dev/go-workspace
export GOROOT=/usr/local/opt/go/libexec
export PATH=$PATH:$GOPATH/bin
export PATH=$PATH:$GOROOT/bin

2: 运行

# source ~/.zshrc 

source ~./bashrc 

根据步骤 #2 中插入的新变量更新您的 $PATH

3:然后创建您的工作区目录:

$ mkdir -p $GOPATH $GOPATH/src $GOPATH/pkg $GOPATH/bin

4:创建一个test.go,hello world

package main
import "fmt"

func main() {
    fmt.Printf("hello, world\n")
}

运行 你的程序通过执行:

$ go run test.go

如果你想编译它并将它移动到$GOPATH/bin,那么运行:

$ go install test.go

由于我们已将 $GOPATH/bin 添加到您的 $PATH 中,您可以从任何地方 运行 您的程序,只需键入 test :

$ test

如果一切正常,输出将是:

hello, world

tldr;

macos terminal: 
brew install go
edit ~/.zshenv
export GOROOT="/usr/local/Cellar/go/1.16.6/libexec"
export GOPATH="/Users/Shared/Development/go-workspace"
export PATH="$PATH:$GOPATH/bin"

从为环境配置的工作空间的角度考虑 GOPATHGOROOT是go语言的安装点。 Homebrew 会将 bin 命令符号链接到您的 /usr/local/bin。将 $GOPATH 添加到您的 PATH 以查找您稍后安装的任何 go 程序。