无法下载,$ GOPATH没有设置
我想安装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
任何帮助如何解决这个在MacOS上?
[更新:从Go 1.8开始, GOPATH
默认为$HOME/go
,但是如果您想了解GOPATH
布局,自定义等等,您仍然可以发现这一点。
Go官方网站讨论了GOPATH以及如何布置工作区目录 。
export GOPATH="$HOME/your-workspace-dir/"
– 在shell中运行它,然后将其添加到~/.bashrc
或等价物中,以便将来为您设置。 Go将在这里的src/
, bin/
和pkg/
子目录下安装软件包。 你要把自己的包放在$GOPATH/src
,比如$GOPATH/src/github.com/myusername/
如果你想发布到GitHub。 您也可能需要在.bashrc
export PATH=$PATH:$GOPATH/bin
,以便在$GOPATH
下运行已编译的程序。
或者, 通过Rob Pike ,你也可以设置CDPATH
所以在bash中打包dirs更快: export CDPATH=.:$GOPATH/src/github.com:$GOPATH/src/golang.org/x
表示你可以键入cd net/html
而不是cd $GOPATH/src/golang.org/x/net/html
。
Keith Rarick 指出,你可以设置GOPATH=$HOME
,把Go的src/
, pkg/
和bin/
目录放在你的homedir下。 这可以是很好的(例如,你可能已经在你的path中有$HOME/bin
),但是当然有些人使用多个工作空间等等。
我已经尝试了很多个星期。
这一个工作
在Ubuntu上设置Go开发环境,以及如何修复$ GOPATH / $ GOROOT
脚步
mkdir ~/go
在.bashrc中设置$ GOPATH,
export GOPATH=~/go export PATH=$PATH:$GOPATH/bin
使用酿造
我用brew
安装它。
$ brew install go
当它完成,如果你运行这个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
重要的部分有这些行:
/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
然后你可以使用GO来检查它是否正确configuration:
$ 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"
设置json2csv
看起来不错,所以让我们安装json2csv
:
$ go get github.com/jehiah/json2csv $
刚刚发生了什么? 它安装它。 你可以这样检查:
$ $ ls -l $GOPATH/bin total 5248 -rwxr-xr-x 1 sammingolelli staff 2686320 Jun 9 12:28 json2csv
好的,为什么我json2csv
在我的shell中键入json2csv
? 这是因为$GOPATH
下的/bin
目录不在$PATH
。
$ type -f json2csv -bash: type: json2csv: not found
所以让我们暂时添加它:
$ export PATH=$GOPATH/bin:$PATH
并重新检查:
$ type -f json2csv json2csv is hashed (/usr/local/opt/go/bin/bin/json2csv)
现在它在那里:
$ 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
将我们对$PATH
和$GOPATH
所做的修改添加到$HOME/.bash_profile
,使它们在重新启动之间保持$GOPATH
。
观看video
总的来说,我总是推荐Go的官方video来快速浏览一下这个问题:
http://www.youtube.com/watch?v=XCsL89YtqCs
比被告知更容易显示。
@ jwfearn解释了video的重要部分:
export GOPATH="${HOME}/gocode"; export PATH="${PATH}:${GOPATH}/bin"; mkdir -p "${GOPATH}"
只要export GOPATH="/whatever/you/like/your/GOPATH/to/be"
。
对于MAC来说,这个效果很好。
sudo nano /etc/bashrc
并在文件末尾添加下面的内容
export PATH=$PATH:/usr/local/opt/go/libexec/bin export GOPATH=/usr/local/opt/go/bin
这应该解决这个问题。 尝试打开一个新的terminal并回显$ GOPATH你应该看到正确的值。
我发现这样做更容易:
export GOROOT=$HOME/go export GOPATH=$GOROOT/bin export PATH=$PATH:$GOPATH
(对于MAC)
我尝试了所有这些答案,还有一些还不为人知的原因,他们都没有工作。
我必须通过为每个需要它的命令设置环境variables来“强制馈送”GOPATH。 例如:
sudo env GOPATH=$HOME/goWorkDirectory go build ...
甚至glide
给了我GOPATH not set
错误。 再次通过“强制喂食”解决了这个问题:我尝试了所有这些答案,而且由于一些原因不明,他们都没有工作。
我必须通过为每个需要它的命令设置环境variables来“强制馈送”GOPATH。
sudo env GOPATH=$HOME/goWorkDirectory glide install
希望这有助于某人。
如果在设置了$GOPATH
之后遇到这个问题,可能是因为您正在使用不支持的shell运行它。 我正在使用fish
,它不起作用,启动与bash
工作正常。
你的$GOROOT
不应该被设置。 您应该将$GOPATH
设置为$HOME/go
是inputexport $GOPATH=$HOME/go
请inputexport GOROOT=""
来解决您的问题。
我不得不以root身份运行一个应用程序(在80端口上打开一个web服务器),这给我带来了错误,因为sudo用户与普通用户有不同的环境,因此GOPATH没有设置。
如果有其他人遇到这个问题,请将-E
添加到命令中,这将保留用户环境。
sudo -E go run main.go
有关更多信息,请参阅此处的讨论: Google网上论坛 – GOPATH问题
- APC是否兼容PHP 5.4或PHP 5.5?
- 如何在Windows上安装mongoDB?
- MANIFEST.in忽略“python setup.py install” – 没有安装数据文件?
- 为C#应用程序创build安装程序,并将.NET Framework安装程序包含到安装程序中
- 我如何find一个家酿的可安装软件包列表?
- 导轨3安装错误“File not found:lib”
- 如何编译/安装node.js(不能configurationcxx编译器!)(Ubuntu)。
- 如何从下载源安装golang第三方项目?
- 在Windows上安装npm(Node.js包pipe理器)(不使用Node.js MSI)