を使用して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でこれを修正する方法について何か助けはありますか?
回答:
[更新:Go 1.8以降、GOPATH
デフォルトは$HOME/go
ですが、GOPATH
レイアウトを理解したり、カスタマイズしたりする場合は、これが役立つ場合があります。]
Goの公式サイトでは、GOPATHとワークスペースディレクトリのレイアウト方法について説明しています。
export GOPATH="$HOME/your-workspace-dir/"
-シェルで実行してから、~/.bashrc
または同等のものに追加して、将来設定されるようにします。Goは、、、、およびサブディレクトリの下src/
にパッケージをインストールします。GitHubに公開する場合など、独自のパッケージをのどこかに配置する必要があります。あなたはまた、おそらくたいと思うあなたにあなたが下のコンパイルされたプログラムを実行することができるように。bin/
pkg/
$GOPATH/src
$GOPATH/src/github.com/myusername/
export PATH=$PATH:$GOPATH/bin
.bashrc
$GOPATH
必要に応じて、ロブ・パイクを経由して、あなたも設定することができCDPATH
、それがために高速ですので、cd
bashでのdirsをパッケージ化する: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/
eg github.com/youruser/x
とを含む1つのワークスペースを使用できますgithub.com/youruser/y
。それが私がすることです。人々は他の理由でそうする理由があるかもしれませんが(プロジェクトを分けておくという会社の方針?)、それについて話すことはできません。
echo $GOPATH
言いますか?別の質問として投稿する価値があるかもしれません。なんらかの異常な状況にあるように思えますが、コメントのデバッグは難しい場合があります。
export
それをしなかったことです。/bin/bash -c "echo \$GOPATH"
サブプロセスが認識できることを確認するために実行します$GOPATH
。空のエコーが表示された場合は、実行export GOPATH
してからgo get ...
これはうまくいった
Ubuntuでの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)*
エクスポート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
に追加します。
一般的には、この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用)
私はこれらすべての答えを試しましたが、いくつかの未知の理由により、どれもうまくいきませんでした。
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コマンドを実行するときに、任意のパスをGOPATHとして使用できます。
まず、httpsgost
://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...]
たとえば、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
のパススペースに追加したことを忘れないでください。のいずれかのレベルのサブディレクトリの下にいる場合は/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
'go env'を実行して、GOPATHが現在どこを指しているかを確認します。そのディレクトリに移動すると、 'go get..etc'コマンドが機能するはずです。
rootとしてアプリケーションを実行する必要があり(ポート80でWebサーバーを開くため)、sudoユーザーの環境が通常のユーザーとは異なるため、GOPATHが設定されていなかったため、エラーが発生しました。
他の誰かがこの問題を抱えている場合は-E
、コマンドに追加すると、ユーザー環境が保持されます。
sudo -E go run main.go
詳細については、こちらのディスカッションを参照してください:Googleグループ– GOPATH問題