다운로드 할 수없고 $ 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

답변:


140

[업데이트 : 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경로에 있을 수 있습니다 ). 물론 일부 사람들은 여러 작업 공간 등을 사용합니다.


정보 주셔서 감사합니다. 개별 프로젝트마다 작업 공간을 변경해야합니까?
Doug Molineux

1
일반적으로, 아니, 당신은 누구 하나의 작업 공간을 사용할 수 있습니다 src/예를 들어, 포함 github.com/youruser/xgithub.com/youruser/y. 그게 내가하는 일이야. 사람들은 다른 이유로해야 할 이유가있을 수 있지만 (프로젝트를 분리하기위한 회사 정책?) 나는 그것에 대해 말할 수 없습니다.
twotwotwo

3
$ GOPATH가 설정되었지만 "다운로드 할 수 없음, $ GOPATH가 설정되지 않았습니다. 자세한 내용은 go help gopath"를 참조하십시오.
Tyguy7

어떤 플랫폼 (Windows 또는 Linux / OS X / 기타 Unix)? Windows가 아닌 경우 무엇을 echo $GOPATH말합니까? 별도의 질문으로 게시하는 것이 좋습니다. 이상한 상황에 처한 것처럼 들리며 주석으로 디버깅하는 것은 까다로울 수 있습니다.
twotwotwo

2
@ Tyguy7 기회는 당신이하지 않았다 export; /bin/bash -c "echo \$GOPATH"하위 프로세스가 볼 수 있는지 확인하기 위해 실행 합니다 $GOPATH. 빈 export GOPATHgo get ...
반향이


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

5

나는 이것을 이렇게 쉽게하는 것을 발견했다 :

export GOROOT=$HOME/go
export GOPATH=$GOROOT/bin
export PATH=$PATH:$GOPATH

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를 "강제 피드"해야했습니다. 예를 들면 다음과 같습니다.

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

심지어 glide나에게주고 있었다 GOPATH not set오류가 발생했습니다. 다시 한 번 "강제 수유"를 통해 해결했습니다. 나는이 모든 답을 시도했지만 여전히 알려지지 않은 이유로 아무 것도 효과가 없었습니다.

필요한 모든 명령마다 환경 변수를 설정하여 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
내가 멍청한 놈이라면, 아직 "내 GOPATH가 어디에 있는지"알 수 없습니다. IMHO 환경 변수 로 재정의 할 수 있는 기본 GOPATH 동작 이 없다는 것은 당연한 일입니다.
jwfearn

0

$GOPATH설정 후이 문제가 발생 하면 지원되지 않는 쉘로 실행했기 때문일 수 있습니다. 나는 사용 fish하고 있었고 작동하지 않아서 시작했다 bash.


0

다른 사람들이 제안한 것처럼 "내보내기"솔루션을 사용할 수 있습니다. 영구적 인 편의를 위해 다른 솔루션을 제공하고 싶습니다 .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를 설정하고 명령을 실행하는 데 도움이됩니다. 그러나 당신이에 경로를 추가 한 것을 기억 gostpathspace을 . 의 하위 디렉토리 수준에 있다면 /home/foobar/bar아래 명령을 실행하여 짧게 동일한 작업을 수행 할 수도 있습니다.

$ gost get -- github.com/go-sql-driver/mysql

gostGOPATH를 관리하고 Go 명령을 실행하는 데 도움이되는 간단한 Go of Tool입니다. 이 명령을 사용하여 다른 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

이 문제는 라즈베리 파이에서 나에게 발생했습니다. VNC 클라이언트를 통해 로그인했습니다. GOPATH를 설정하고 내보내더라도 문제가 지속되었습니다. 그런 다음 sudo없이 "go get"명령을 실행하면 완벽하게 작동했습니다.


-1

sudo 사용자가 일반 사용자와 다른 환경을 가지고 있으므로 GOPATH가 설정되지 않았기 때문에 응용 프로그램을 루트로 실행해야했습니다 (포트 80에서 웹 서버를 열려면).

다른 사람이이 문제를 겪고 있다면 -E명령에 추가 하면 사용자 환경이 보존됩니다.

sudo -E go run main.go

자세한 내용은 여기에서 토론을 참조하십시오 : Google 그룹스 – GOPATH 문제


왜 이것이
다운 보트
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.