如何在Mac OS X 10.10中设置GOPATH

时间:2015-02-26 11:47:42

标签: go gocql

我在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$

4 个答案:

答案 0 :(得分:25)

注意:

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,因为用于sudoroot)的环境变量与当前用户不同:

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

  

使用sudo命令调用时,不会反映添加到这些位置的任何变量,因为sudo具有重置环境和设置安全路径的默认策略(此行为在/etc/sudoers

答案 1 :(得分:0)

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

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

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

之后,在终端中运行以下命令:

source ~/.profile

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

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

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

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

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

export GOPATH=$HOME/Documents/goWorkSpace

答案 2 :(得分:0)

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

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

<块引用>

文件 ~/.zshrc 用于 zsh shell。引入了 zsh shell 在 OS Big Sur 中。

~/.bashrc 是预览操作系统版本中使用的 bash shell,对于 linux 用户也是如此。

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

对于从 https://golang.org/doc/install 的原始 pkg 下载安装的 go

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 update 和 brew install 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

答案 3 :(得分:0)

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"

GOPATH 视为为环境配置的工作区。 GOROOT 是 go 语言的安装点。 Homebrew 会将 bin 命令符号链接到您的 /usr/local/bin。将 $GOPATH 添加到您的 PATH 中,以便找到您以后安装的任何 Go 程序。