ダウンロードできません、$ GOPATHが設定されていません


150

を使用して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でこれを修正する方法について何か助けはありますか?




3
別のパッケージ(子犬)でも同じ問題が発生します。C'mon Goメンテナー、ジョブを完了する(OS X)インストーラーを作成してください!NodeのOS Xインストーラーが良い例です。ノードを使用する場合、追加の手動インストール手順は必要ありません。うまくいきます。Goインストーラの将来のバージョンが改善されることを願っています。
jwfearn 2014

回答:


140

[更新: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、それがために高速ですので、cdbashでの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パスに含まれている可能性があります)。もちろん、一部の人々は複数のワークスペースなどを使用しています。


情報をありがとう。個々のプロジェクトごとにワークスペースを変更する必要がありますか?
Doug Molineux

1
一般に、いいえ、src/eg github.com/youruser/xとを含む1つのワークスペースを使用できますgithub.com/youruser/y。それが私がすることです。人々は他の理由でそうする理由があるかもしれませんが(プロジェクトを分けておくという会社の方針?)、それについて話すことはできません。
twotwotwo 2015年

3
$ GOPATHは設定されていますが、「ダウンロードできません。$ GOPATHが設定されていません。詳細については、go help gopathを参照してください」と表示されます。
Tyguy7

どのプラットフォーム(WindowsまたはLinux / OS X /その他のUnix)?Windowsでない場合、何をecho $GOPATH言いますか?別の質問として投稿する価値があるかもしれません。なんらかの異常な状況にあるように思えますが、コメントのデバッグは難しい場合があります。
twotwotwo 2015年

2
@ Tyguy7可能性はあなたがexportそれをしなかったことです。/bin/bash -c "echo \$GOPATH"サブプロセスが認識できることを確認するために実行します$GOPATH。空のエコーが表示された場合は、実行export GOPATHしてからgo get ...
sanmai


33

醸造を使用して

を使用してインストールしました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がインストールされた場所を示しています。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のセットアップ

よさそうなので、インストールしてみましょう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に追加します。


18

ビデオを見る

一般的には、このGoの公式ビデオを常にお勧めします。

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

言われるよりも示される方が簡単です。

@jwfearnはビデオの重要な部分を言い換えました:

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


2
優れた紹介ビデオ-表示されたときはいつもよくわかります。
Joshua Pinter

3
ありがとう@jwfearn-動画は音楽やその他のエンターテイメント用です。それらからコピーして貼り付けることはできません:-)
kguest '11


3

MACの場合、これは私にはうまくいきました。

sudo nano /etc/bashrc

以下をファイルの最後に追加します

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

これで問題が解決します。新しいターミナルを開いて$ GOPATHをエコーし​​てみてください。正しい値が表示されます。


2

(Mac用)

私はこれらすべての答えを試しましたが、いくつかの未知の理由により、どれもうまくいきませんでした。

GOPATHを必要とするすべてのコマンドごとに環境変数を設定して、GOPATHを「強制フィード」する必要がありました。例えば:

sudo env GOPATH=$HOME/goWorkDirectory go build ...

さえglide私にGOPATH not setエラーを与えていました。「強制給餌」によって再び解決しました。私はこれらすべての答えを試しましたが、いくつかの未知の理由により、どれも機能しませんでした。

GOPATHを必要とするすべてのコマンドごとに環境変数を設定して、GOPATHを「強制フィード」する必要がありました。

sudo env GOPATH=$HOME/goWorkDirectory glide install

これが誰かを助けることを願っています。


2

あなたは、$GOROOT設定すべきではありません。次の$GOPATHよう$HOME/goに入力して設定する必要がありますexport $GOPATH=$HOME/go

入力export GOROOT=""して問題を修正してください。


1

ただしてくださいexport GOPATH="/whatever/you/like/your/GOPATH/to/be"


4
私がgo noobである場合、「どこにGOPATHを置きたいか」はまだわかりません。私見それは、環境変数によってオーバーライドできるデフォルトの GOPATH動作がないことです
jwfearn 2016

0

$GOPATHセットアップ後にこの問題が発生した場合は、サポートされていないシェルで実行している可能性があります。私は使用fishしていて、うまくいきませんでしたbash


0

他の人が提案したのと同じように、「エクスポート」ソリューションを使用できます。永続的な便宜のために別のソリューションを提供したいと思います。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

gostGOPATHの管理とGoコマンドの実行を支援するGoのシンプルなツールです。これを使用して他のGoコマンドを実行する方法の詳細については、を実行してくださいgost help goCmdName。たとえば、について詳しく知りたい場合はinstall、次のように単語を入力してください。

$ gost help install

詳細については、プロジェクトのREADMEもご覧ください。https//github.com/byte16/gost/blob/master/README.md


0

'go env'を実行して、GOPATHが現在どこを指しているかを確認します。そのディレクトリに移動すると、 'go get..etc'コマンドが機能するはずです。


0

この問題はラズベリーpiで発生しました。VNCクライアントを介してログインしました。GOPATHを設定およびエクスポートしても問題が解決しませんでした。次に、sudoを使用せずに「go get」コマンドを実行すると、完全に機能しました。


-1

rootとしてアプリケーションを実行する必要があり(ポート80でWebサーバーを開くため)、sudoユーザーの環境が通常のユーザーとは異なるため、GOPATHが設定されていなかったため、エラーが発生しました。

他の誰かがこの問題を抱えている場合は-E、コマンドに追加すると、ユーザー環境が保持されます。

sudo -E go run main.go

詳細については、こちらのディスカッションを参照してください:Googleグループ– GOPATH問題


なぜこれが反対投票されたかはわかりませんが、私のために修正しました…
Pwdr
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.