我想使用安装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上解决此问题的任何帮助?
我想使用安装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上解决此问题的任何帮助?
Answers:
[更新:从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一样。你也可能会想export PATH=$PATH:$GOPATH/bin
在你.bashrc
下这样你就可以编译运行的程序$GOPATH
。
您也可以选择通过Rob Pike进行设置,CDPATH
以便更快地cd
将dirs打包到bash中:这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
在路径中了),但是当然有些人会使用多个工作区,等等。
src/
包含例如github.com/youruser/x
和的工作区github.com/youruser/y
。我就是做这个的。人们可能有其他理由这样做(公司政策以使项目分开吗?),但是我不能拒绝。
echo $GOPATH
该怎么说?可能值得将其作为一个单独的问题发布。听起来好像您处在某种异常情况下,调试注释中的代码可能很棘手。
export
?运行/bin/bash -c "echo \$GOPATH"
以验证子流程可以看到$GOPATH
;如果回声为空,则运行export GOPATH
然后go get ...
这个工作了
在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)*
导出PATH = $ PATH:/ usr / local / opt / go / libexec / bin
那显示了GO的安装位置。我们需要执行以下操作来设置GO的环境:
$ export PATH=$PATH:/usr/local/opt/go/libexec/bin
$ export GOPATH=/usr/local/opt/go/bin
然后,您可以使用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"
看起来不错,所以让我们安装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
我的外壳?这是因为下的/bin
目录$GOPATH
不在您的上$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
,使他们重新引导之间依然存在。
(对于MAC)
我尝试了所有这些答案,但由于某些仍然未知的原因,它们都不起作用。
我必须通过为每个需要它的命令设置环境变量来“强制输入” GOPATH。例如:
sudo env GOPATH=$HOME/goWorkDirectory go build ...
甚至glide
给了我GOPATH not set
错误。再次通过“强制喂食”解决了该问题:我尝试了所有这些答案,但由于某些未知的原因,它们都不起作用。
我必须通过为每个需要它的命令设置环境变量来“强制输入” GOPATH。
sudo env GOPATH=$HOME/goWorkDirectory glide install
希望这对某人有帮助。
做吧export GOPATH="/whatever/you/like/your/GOPATH/to/be"
。
如果在$GOPATH
设置后遇到此问题,则可能是因为您正在使用不受支持的Shell来运行它。我正在使用fish
它,但是没有用,可以bash
正常运行。
您可以像其他人所建议的那样使用“导出”解决方案。我想为您提供另一种解决方案,以提供永久的便利:运行Go命令时,您可以将任何路径用作GOPATH。
首先,您需要下载一个名为gost
:https : //github.com/byte16/gost/releases的小工具。如果使用ubuntu,则可以下载linux版本(https://github.com/byte16/gost/releases/download/v0.1.0/gost_linux_amd64.tar.gz)。
然后,您需要运行以下命令来解压缩它:
$ cd /path/to/your/download/directory
$ tar -xvf gost_linux_amd64.tar.gz
您将获得一个可执行文件gost
。您可以将其移至/usr/local/bin
以方便使用:
$ sudo mv gost /usr/local/bin
运行以下命令以将要用作GOPATH的路径添加到维护的路径空间中 gost
。必须为路径指定一个名称,以备后用。
$ gost add foo /home/foobar/bar # 'foo' is the name and '/home/foobar/bar' is the path
使用以下格式运行任何Go命令:
gost goCommand [-p {pathName}] -- [goFlags...] [goArgs...]
例如,要运行go get github.com/go-sql-driver/mysql
与/home/foobar/bar
作为GOPATH,只是做如下图所示:
$ gost get -p foo -- github.com/go-sql-driver/mysql # 'foo' is the name you give to the path above.
这将帮助您设置GOPATH并运行命令。但请记住,你已经添加的路径进入gost
的pathspace。如果您在的子目录的任何级别下/home/foobar/bar
,您甚至可以运行下面的命令,该命令可以简短地完成相同的操作:
$ gost get -- github.com/go-sql-driver/mysql
gost
是Go的简单工具,可以帮助您管理GOPATH和运行Go命令。有关如何使用它运行其他Go命令的更多详细信息,您可以运行gost help goCmdName
。例如,您想了解更多有关的信息install
,只需在下面输入文字:
$ gost help install
您还可以在项目的自述文件中找到更多详细信息:https : //github.com/byte16/gost/blob/master/README.md
我必须以root用户身份运行应用程序(要在端口80上打开Web服务器),这对我产生了错误,因为sudo用户的环境与普通用户不同,因此未设置GOPATH。
如果其他人有此问题,请添加-E
到命令中,这将保留用户环境。
sudo -E go run main.go
有关更多信息,请参见此处的讨论:Google网上论坛– GOPATH问题