go get으로 "인식 할 수없는 가져 오기 경로"


93

을 (를) 설치하려고 web.go하지만 실행 중이 go get github.com/hoisie/web반환됩니다.

package bufio: unrecognized import path "bufio"
package bytes: unrecognized import path "bytes"
package crypto/rand: unrecognized import path "crypto/rand"
package crypto/sha1: unrecognized import path "crypto/sha1"
package crypto/tls: unrecognized import path "crypto/tls"
package encoding/base64: unrecognized import path "encoding/base64"
package encoding/binary: unrecognized import path "encoding/binary"
package encoding/json: unrecognized import path "encoding/json"
package errors: unrecognized import path "errors"
package fmt: unrecognized import path "fmt"

그리고 이것은 다른 아무것도 반환하기 전에 다양한 패키지로 잠시 동안 계속됩니다. go env나에게 준다 :

GOARCH="amd64"
GOBIN="/usr/local/go/bin"
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH=""
GORACE=""
GOROOT="/home/me/go"
GOTOOLDIR="/home/me/go/pkg/tool/linux_amd64"
TERM="dumb"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread"
CXX="g++"
CGO_ENABLED="1"

어떻게 설치할 수 web.go있습니까? go get(대신 go install) 사용 은 github 페이지의 README에 있습니다. 내 Go 버전은 go version go1.2 linux/amd64.


3
GOROOT를 내보냈지만 GOPATH가 없습니까? GOROOT은 GOBIN과 다른가요? Go를 어떻게 설치 했습니까? 환경을 어떻게 설정 했습니까?
— Volker

golang.org/doc/install 페이지 에 따라 go를 설치했습니다 . GOPATH에 무엇을 넣어야할지 잘 모르겠습니다.
— q3d '

답변:


102

문제는 유효하지 않은 GOROOT.

Go를 설치 한 것 같습니다 /usr/local/go.
따라서 GOROOT경로를 /usr/local/go/bin.

작업 공간 (GOPATH)을 /home/me/go.

문제를 해결할 수 있습니다.
여기에있는 bash 프로필 하단에 이것을 추가하십시오 =>$HOME/.profile

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

의 이전 참조를 제거해야합니다 GOROOT.

그런 다음 web.go를 다시 설치하십시오.

그래도 작동하지 않으면 Ubuntu에서 Go를 설치하십시오.

sudo apt-get install golang

비디오 자습서 : http://www.youtube.com/watch?v=2PATwIfO5ag


15
GOROOT를 설정하면 안됩니다. PATH 선언이 / usr / local / go / bin에 도달하지 않습니다. 또한 우분투 패키지는 공식 릴리스 인 1.2보다 약간 뒤쳐져 있습니다.
— JimB

2
공식 사이트 (tar 파일에서 / usr / local로 설치)의 go install 지침을 따랐을 때 위와 같이 GOROOT를 변경할 때까지 위의 오류가 발생했습니다.
— Drew

1
방금 fedora 20에 새로운 golang 1.3을 설치했는데 go get동일한 오류가 발생합니다. GOROOT로 설정 /usr되어 있으면 / usr / local이 아닌 / usr에 설치됩니다. 로 설정 GOPATH합니다 $HOME/go. 확인해야 할 다른 사항이 있습니까?
— Dfr

15
나 자신에게 답하기 : 설정을 해제 GOROOT하면 문제가 해결 된 것 같습니다.
— Dfr

4
GOROOT를 설정하지 않으면 +1. 설정을 해제하고 설정이 해제되었는지 확인한 echo $GOROOT다음 GO가 수행 한 환경에 여전히 포함되어 있고 내가 설치 한 위치 go env에 /usr/local/go있는지 확인 했습니다 (따라서 어떤 경우에도 설정할 필요가 없음)
— StartupGuy

36

brewOSX 10.11에 Go with 를 설치 했고 다음과 같이 설정 GOROOT해야했습니다.

/usr/local/Cellar/go/1.5.1/libexec

(물론이 경로의 버전을 가지고있는 go 버전으로 바꾸십시오)

Brew는 gotool을 속이는 심볼릭 링크를 사용합니다. 따라서 링크를 집으로 따르십시오.


아, 마침내 효과가있는 것을 찾았습니다. 감사합니다 에릭!
— Mir Adnan

23

우분투 14.04의 이전 버전 (이전 PPA에서 설치됨)에서 최신 (1.2.1) 기본 패키지로 이동 한 후에도 똑같은 문제가 발생했습니다.

첫 번째 단계는 기존 go를 제거하는 것이 었습니다.

sudo apt-get purge golang*

다음 경고를 출력합니다.

dpkg: warning: while removing golang-go, directory '/usr/lib/go/src' not empty so not removed
dpkg: warning: while removing golang-go.tools, directory '/usr/lib/go' not empty so not removed

go를 제거하면 일부 파일이 남겨져 새로운 설치를 혼동 할 수 있습니다. 보다 정확하게는 설치 자체가 잘 완료되지만 나중에 "go get something"과 같은 모든 go 명령은 "인식 할 수없는 가져 오기 경로"오류를 발생시킵니다.

내가해야 할 일은 먼저 해당 디렉토리를 제거하고 golang을 다시 설치하면 모두 매력처럼 작동합니다 (GOPATH도 설정했다고 가정)

# careful!
sudo rm -rf /usr/lib/go /usr/lib/go/src
sudo apt-get install golang-go golang-go.tools

나는 또한 제거해야했다/usr/local/go/
— Natim

또한 / usr / bin / go를 제거해야했습니다.
— eatonphil 15.07.17

6

GFW가 golang.org에 액세스하는 것을 금지했기 때문입니다! 프록시를 사용하면 잘 작동 할 수 있습니다.

명령을 사용하여 정보를 볼 수 있습니다 go get -v -u golang.org/x/oauth2


1
이것이 제가 중국에서 겪고있는 문제입니다. $ http_proxy 설정 후 오류없이 패키지를 설치할 수 있습니다.
— ashen

1
차단 될뿐만 아니라 DNS도 오염됩니다. 먼저 http://ping.eu/nslookup/도메인의 올바른 IP를 찾아 호스트 파일에 설정 한 다음 프록시를 사용하여 다운로드하십시오. export http_proxy=127.0.0.1:1080 https_proxy=127.0.0.1:1080 때때로 당신은 단지 Gov에에 F 워드 말하고 싶은
— 옆집에서 Mr.Wang

4

$ unset GOROOT나를 위해 일했습니다. 대부분의 답변에 따르면 GOROOT가 유효하지 않습니다.


2

MacOS 10.10에서 동일한 문제가 발생했습니다. 그리고 나는 OhMyZsh 쉘로 인한 문제를 발견했습니다. 그런 다음 다시 bash로 전환하여 모든 것이 잘되었습니다.

내 이동 환경은 다음과 같습니다.

bash-3.2$ go env
GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/bis/go"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/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

그게 go env이 작동하지 않았을 때 또는 그것을했을 때? 아마도 "[다른 셸]에 의해 발생"된 것이 아니라 GOPATH다른 셸에서 올바르게 설정되지 않았을 가능성이 있습니다 . csh 및 zsh 쉘 계열은 동일한 시작 파일을 사용 하지 않습니다 (예 : no ~/.profile). 특히 zsh사용 $ZDOTDIR/.zshenv하고 $ZDOTDIR/.zprofile( $ZDOTDIR기본값 $HOME).
— Dave C

1

가장 일반적인 원인은 다음과 같습니다.
1. 잘못 구성된 GOROOT
또는
2. GOPATH가 설정되지 않았습니다.


0

go1.2를 go1.4로 업그레이드 한 후에도 동일한 문제가 발생했습니다.

내 GOPATH에서 src 이름을 _src로 바꾼 다음 go get -v

그런 다음 _src를 삭제했습니다.

도움이되기를 바랍니다.


0

다른 패키지를 설치할 때이 문제가 발생했으며 PATH의 GOROOT 및 GOPATH 구성으로 인해 발생할 수 있습니다. 내 OS X 설치가 나를 위해 처리했기 때문에 GOROOT를 설정하지 않는 경향이 있습니다.

  1. .profile (또는 프로필 구성을 저장할 위치 : .bash_profile, .zshrc, .bashrc 등)에서 다음을 확인하십시오.

    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin
  2. 또한 unset GOROOT경로가 잘못된 경우 에도을 (를) 원할 수 있습니다.

  3. 또한 아래에서 수행 한 것과 유사하게 GOPATH 할당 직전에 PATH를 정리해야합니다.

    export PATH=$HOME/bin:/usr/local/bin:$PATH
    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin
  4. 그런 다음 source <.profile>활성화하려면

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