go get github.com/jehiah/json2csv
を使用して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/"
-シェルで実行し、~/.bashrc
または同等のものに追加して、将来設定されるようにします。 Goは、src/
、bin/
、およびpkg/
のサブディレクトリにパッケージをインストールします。 GitHubに公開する場合は、$GOPATH/src
のような$GOPATH/src/github.com/myusername/
の下に独自のパッケージを配置する必要があります。 export PATH=$PATH:$GOPATH/bin
の下でコンパイルされたプログラムを実行できるように、おそらく.bashrc
に$GOPATH
も必要になるでしょう。
オプションで、 Rob Pike経由 、CDPATH
を設定してbashでディレクトリをパッケージ化するためにcd
を高速化することもできます: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の直下に配置できます。それはいいかもしれません(たとえば、既にパスに$HOME/bin
が含まれているかもしれません)が、もちろん一部の人々は複数のワークスペースなどを使用しています。
これはうまくいった
buntuでGo開発環境をセットアップし、$ GOPATH/$ GOROOTを修正する方法
ステップ
mkdir ~/go
$ GOPATHを.bashrcに設定します。
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)*
エクスポートパス= $パス:/ 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
に追加して、再起動してもそれらが持続するようにします。
一般的に、私はいつもGoからのこの公式ビデオをお勧めします。
http://www.youtube.com/watch?v=XCsL89YtqCs
言われるよりも見せる方が簡単です
@ jwfearn ビデオの重要な部分を言い換えました。
export GOPATH="${HOME}/gocode"; export PATH="${PATH}:${GOPATH}/bin"; mkdir -p "${GOPATH}"
私はこのようにする方が簡単だとわかりました:
export GOROOT=$HOME/go
export GOPATH=$GOROOT/bin
export PATH=$PATH:$GOPATH
MACのためにこれは私のためにうまくいった。
Sudo nano /etc/bashrc
そして、ファイルの最後に以下を追加してください。
export PATH=$PATH:/usr/local/opt/go/libexec/bin
export GOPATH=/usr/local/opt/go/bin
これで問題は解決するはずです。新しい端末を開いて$ GOPATHをエコーしてみてください。正しい値が表示されるはずです。
(MACの場合)
私はこれらすべての答えを試してみましたが、まだ知られていない理由で、どれもうまくいきませんでした。
GOPATHを必要とするコマンドごとに環境変数を設定してGOPATHを「強制的にフィード」しなければなりませんでした。例えば:
Sudo env GOPATH=$HOME/goWorkDirectory go build ...
glide
でもGOPATH not set
エラーを出していました。やはり「力の餌付け」によってそれを解決した。私はこれらすべての答えを試したが、それでも未知の理由でそれらのどれもうまくいかなかった。
GOPATHを必要とするコマンドごとに環境変数を設定してGOPATHを「強制的にフィード」しなければなりませんでした。
Sudo env GOPATH=$HOME/goWorkDirectory glide install
これが誰かに役立つことを願っています。
あなたの$GOROOT
は設定すべきではありません。 $GOPATH
と入力して、$HOME/go
をexport $GOPATH=$HOME/go
に設定する必要があります。
問題を解決するにはexport GOROOT=""
を入力してください。
export GOPATH="/whatever/you/like/your/GOPATH/to/be"
を実行するだけです。
'go env'を実行して、GOPATHが現在向いている場所を確認してください。そのディレクトリに移動すると、 'go get..etc'コマンドが機能するはずです。
他の人が提案したのと同じように、「エクスポート」ソリューションを使用できます。恒久的な利便性のために別の解決策を提供したいのですが、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として使用したいパスをpathspacegost
で管理しているパスに追加します。パスには後で使用する名前を付ける必要があります。
$ gost add foo /home/foobar/bar # 'foo' is the name and '/home/foobar/bar' is the path
必要なGoコマンドを次の形式で実行します。
gost goCommand [-p {pathName}] -- [goFlags...] [goArgs...]
たとえば、GOPATHとしてgo get github.com/go-sql-driver/mysql
を付けて/home/foobar/bar
を実行したい場合は、次のようにします。
$ 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
は、GOPATHを管理し、Goコマンドを実行するのに役立つ、単純なGoのツールです。他のGoコマンドを実行するための使い方の詳細については、gost help goCmdName
を実行するだけです。たとえば、install
についてもっと知りたい場合は、以下に単語を入力してください。
$ gost help install
プロジェクトのREADMEにも詳細があります。 https://github.com/byte16/gost/blob/master/README.md
この問題はラズベリーパイで私に起こりました。 VNCクライアントを介してログインしていましたGOPATHを設定してエクスポートしても問題が解決しません。それからSudoなしで "go get"コマンドを実行すればそれは完全にうまくいった。
$GOPATH
を設定した後にこの問題に遭遇した場合、それはサポートされていないシェルでそれを実行しているためかもしれません。私はfish
を使用していましたが、bash
で起動してもうまくいきませんでした。