사용하여 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
하거나 이에 상응하는 기능을 추가 하여 향후에 설정 될 것입니다. 이동에 따라 패키지를 설치합니다 src/
, bin/
그리고 pkg/
, 하위 디렉토리가 있습니다. GitHub에 게시하려는 경우 $GOPATH/src
처럼 자신의 패키지를 아래 어딘가에 배치하고 싶을 것 $GOPATH/src/github.com/myusername/
입니다. 당신은 또한 아마 할 것입니다 export PATH=$PATH:$GOPATH/bin
당신에 .bashrc
아래 그래서 당신은 컴파일 된 실행할 수있는 프로그램 $GOPATH
.
선택적으로 Rob Pike를 통해 bash에 dirs를 CDPATH
더 빨리 cd
패키징 하도록 설정할 수도 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
그들이 다시 부팅간에 유지하기 위해.
일반적으로이 문제에 대한 간략한 개요를 얻으려면 항상 Go의 공식 비디오를 추천합니다.
http://www.youtube.com/watch?v=XCsL89YtqCs
말하는 것보다 보여주기가 더 쉽습니다.
@jwfearn 은 동영상의 중요한 부분을 다음과 같이 해석했습니다 .
export GOPATH="${HOME}/gocode"; export PATH="${PATH}:${GOPATH}/bin"; mkdir -p "${GOPATH}"
(MAC 용)
나는이 모든 대답을 시도했지만 여전히 알려지지 않은 이유로 아무도 효과가 없었습니다.
필요한 모든 명령마다 환경 변수를 설정하여 GOPATH를 "강제 피드"해야했습니다. 예를 들면 다음과 같습니다.
sudo env GOPATH=$HOME/goWorkDirectory go build ...
심지어 glide
나에게주고 있었다 GOPATH not set
오류가 발생했습니다. 다시 한 번 "강제 수유"를 통해 해결했습니다. 나는이 모든 답을 시도했지만 여전히 알려지지 않은 이유로 아무 것도 효과가 없었습니다.
필요한 모든 명령마다 환경 변수를 설정하여 GOPATH를 "강제 피드"해야했습니다.
sudo env GOPATH=$HOME/goWorkDirectory glide install
이것이 누군가를 돕기를 바랍니다.
다른 사람들이 제안한 것처럼 "내보내기"솔루션을 사용할 수 있습니다. 영구적 인 편의를 위해 다른 솔루션을 제공하고 싶습니다 .Go 명령을 실행할 때 모든 경로를 GOPATH로 사용할 수 있습니다.
첫째, 당신은라는 이름의 작은 도구 다운로드해야합니다 gost
: https://github.com/byte16/gost/releases를 . 우분투를 사용하는 경우 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
의 pathspace을 . 의 하위 디렉토리 수준에 있다면 /home/foobar/bar
아래 명령을 실행하여 짧게 동일한 작업을 수행 할 수도 있습니다.
$ gost get -- github.com/go-sql-driver/mysql
gost
GOPATH를 관리하고 Go 명령을 실행하는 데 도움이되는 간단한 Go of Tool입니다. 이 명령을 사용하여 다른 Go 명령을 실행하는 방법에 대한 자세한 내용은을 실행하면 gost help goCmdName
됩니다. 예를 들어에 대한 자세한 내용을 보려면 install
아래에 단어를 입력하십시오.
$ gost help install
프로젝트의 README에서 자세한 내용을 확인할 수도 있습니다. https://github.com/byte16/gost/blob/master/README.md
sudo 사용자가 일반 사용자와 다른 환경을 가지고 있으므로 GOPATH가 설정되지 않았기 때문에 응용 프로그램을 루트로 실행해야했습니다 (포트 80에서 웹 서버를 열려면).
다른 사람이이 문제를 겪고 있다면 -E
명령에 추가 하면 사용자 환경이 보존됩니다.
sudo -E go run main.go
자세한 내용은 여기에서 토론을 참조하십시오 : Google 그룹스 – GOPATH 문제