【问题标题】:How to set GOPATH in Mac OS X 10.10如何在 Mac OS X 10.10 中设置 GOPATH
【发布时间】:2015-04-28 18:47:08
【问题描述】:

我在 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 目录。我可以在我的目录中运行 go 代码。但是当我尝试安装 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$

【问题讨论】:

    标签: go gocql


    【解决方案1】:

    注意事项:

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

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

    正如 Dave 在 cmets 中提到的那样,您根本不需要设置 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:

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

    【讨论】:

    • 我试过了。但仍然面临同样的问题。我用当前的 GOPATH 和 GOROOT 编辑了问题
    • 谢谢。它在没有 sudo 的情况下工作。你能解释一下它是如何工作的吗? ?我是 mac 新手。
    • You don’t need to set GOROOT 而你通常不想这样做。
    • @DaveC 我以前见过。无论如何我总是设置它,因为我总是在非常规路径中解压缩我的 go 安装包(我是那个“使用从 golang.org 网站下载的 zip 二进制文件的 Windows 用户”)。我在答案中包含了文章的链接以获得更多可见性。
    • @VonC,这是文章中特别提到的例外情况之一。我也设置了它(出于其他原因,比如我发现不时做grep $GOROOT/src/…之类的事情很方便)。不过,这个想法是不要一开始就设置它或建议其他人这样做,除非有特殊需要。
    【解决方案2】:

    您需要通知Go您工作区的位置。在本例中,我们将使用 $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
    

    对于从家庭 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】:

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

      【讨论】:

        【解决方案4】:

        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 程序。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-07-08
          • 2015-03-22
          • 2015-11-03
          • 2014-12-15
          • 2011-04-20
          • 2015-05-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多