无法下载,$ GOPATH未设置

Mon*_*lal 146 macos installation go

我想安装json2csv go get github.com/jehiah/json2csv但我收到此错误:

package github.com/jehiah/json2csv: cannot download, $GOPATH not set. For more details see: go help go path
Run Code Online (Sandbox Code Playgroud)

有关如何在MacOS上解决此问题的任何帮助?

two*_*two 137

[更新:从Go 1.8开始,GOPATH默认为$HOME/go,但如果你想了解GOPATH布局,自定义它等,你仍然可以发现它很有用]

Go官方网站讨论了GOPATH以及如何布局工作区目录.

export GOPATH="$HOME/your-workspace-dir/"- 在shell中运行它,然后将其添加到~/.bashrc或等效,以便将来为您设置.去将安装包下src/,bin/pkg/,子目录那里.你想把自己的软件包放在某个地方$GOPATH/src,比如$GOPATH/src/github.com/myusername/你想发布到GitHub.您也可能想要export PATH=$PATH:$GOPATH/bin在您的下面.bashrc运行已编译的程序$GOPATH.

或者,通过Rob Pike,您也可以设置为在bash中打包dirs CDPATH更快cd:export CDPATH=.:$GOPATH/src/github.com:$GOPATH/src/golang.org/x意味着您只需键入cd net/html而不是cd $GOPATH/src/golang.org/x/net/html.

基思Rarick 笔记可以设置GOPATH=$HOME放去的src/,pkg/bin/目录就在你主目录.这可能很好(例如,您可能已经$HOME/bin在您的路径中)但当然有些人使用多个工作区等.

  • $ GOPATH已设置,但"无法下载,$ GOPATH未设置.有关详细信息,请参阅:go help gopath"无论如何都会出现. (3认同)
  • @Tyguy7很有可能你没有`出口'它; 运行`/ bin/bash -c"echo\$ GOPATH"`来验证子进程可以看到`$ GOPATH`; 如果它回声为空,则运行`export GOPATH`然后`go get ...` (2认同)

sur*_*upa 85

这个工作

在Ubuntu上设置Go开发环境,以及如何修复$ GOPATH/$ GOROOT

脚步

mkdir ~/go
Run Code Online (Sandbox Code Playgroud)

在.bashrc中设置$ GOPATH,

export GOPATH=~/go
export PATH=$PATH:$GOPATH/bin
Run Code Online (Sandbox Code Playgroud)


slm*_*slm 33

使用brew

我用它安装了它brew.

$ brew install go
Run Code Online (Sandbox Code Playgroud)

完成后如果你运行这个brew命令,它将显示以下信息:

$ brew info go
go: stable 1.4.2 (bottled), HEAD
Go programming environment
https://golang.org
/usr/local/Cellar/go/1.4.2 (4676 files, 158M) *
  Poured from bottle
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/go.rb
==> Options
--with-cc-all
    Build with cross-compilers and runtime support for all supported platforms
--with-cc-common
    Build with cross-compilers and runtime support for darwin, linux and windows
--without-cgo
    Build without cgo
--without-godoc
    godoc will not be installed for you
--without-vet
    vet will not be installed for you
--HEAD
    Install HEAD version
==> Caveats
As of go 1.2, a valid GOPATH is required to use the `go get` command:
  https://golang.org/doc/code.html#GOPATH

You may wish to add the GOROOT-based install location to your PATH:
  export PATH=$PATH:/usr/local/opt/go/libexec/bin
Run Code Online (Sandbox Code Playgroud)

这些重要的部分是这些线:

/usr/local/Cellar/go/1.4.2(4676个文件,158M)*

export PATH = $ PATH:/ usr/local/opt/go/libexec/bin

设置GO的环境

这显示了GO的安装位置.我们需要执行以下操作来设置GO的环境:

$ export PATH=$PATH:/usr/local/opt/go/libexec/bin
$ export GOPATH=/usr/local/opt/go/bin
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用GO检查它是否正确配置:

$ go env
GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/usr/local/opt/go/bin"
GORACE=""
GOROOT="/usr/local/Cellar/go/1.4.2/libexec"
GOTOOLDIR="/usr/local/Cellar/go/1.4.2/libexec/pkg/tool/darwin_amd64"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fno-common"
CXX="clang++"
CGO_ENABLED="1"
Run Code Online (Sandbox Code Playgroud)

设置json2csv

看起来不错,所以让我们安装json2csv:

$ go get github.com/jehiah/json2csv
$
Run Code Online (Sandbox Code Playgroud)

刚刚发生了什么?它安装了它.你可以这样检查:

$ $ ls -l $GOPATH/bin
total 5248
-rwxr-xr-x  1 sammingolelli  staff  2686320 Jun  9 12:28 json2csv
Run Code Online (Sandbox Code Playgroud)

好的,为什么我不能输入json2csv我的shell?那是因为下面的/bin目录$GOPATH不在你的目录上$PATH.

$ type -f json2csv
-bash: type: json2csv: not found
Run Code Online (Sandbox Code Playgroud)

所以我们暂时添加它:

$ export PATH=$GOPATH/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

并重新检查:

$ type -f json2csv
json2csv is hashed (/usr/local/opt/go/bin/bin/json2csv)
Run Code Online (Sandbox Code Playgroud)

现在它在那里:

$ json2csv --help
Usage of json2csv:
  -d=",": delimiter used for output values
  -i="": /path/to/input.json (optional; default is stdin)
  -k=[]: fields to output
  -o="": /path/to/output.json (optional; default is stdout)
  -p=false: prints header to output
  -v=false: verbose output (to stderr)
  -version=false: print version string
Run Code Online (Sandbox Code Playgroud)

加入我们来所做的修改$PATH,并$GOPATH给你的$HOME/.bash_profile,使他们重新引导之间依然存在.


0x4*_*D53 18

观看视频

总的来说,我总是推荐Go的这个官方视频来快速了解这个问题:

http://www.youtube.com/watch?v=XCsL89YtqCs

它被展示比被告知更容易.

@jwfearn转述了视频的重要部分:

export GOPATH="${HOME}/gocode"; export PATH="${PATH}:${GOPATH}/bin"; mkdir -p "${GOPATH}"

  • 谢谢@jwfearn - 视频用于音乐和其他娱乐; 无法从中复制和粘贴:-) (3认同)
  • 优秀的介绍性视频 - 当我向我展示时,我总是能够更好地理解. (2认同)

小智 6

我发现这样做更容易:

export GOROOT=$HOME/go
export GOPATH=$GOROOT/bin
export PATH=$PATH:$GOPATH
Run Code Online (Sandbox Code Playgroud)