"Percorso di importazione non riconosciuto" con go get


93

Sto cercando di installare un web.go, ma sono in esecuzione go get github.com/hoisie/webritorni

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"

e questo continua per un po 'con vari pacchetti, prima di restituire nient'altro. go envmi da:

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"

Come posso installare web.go? Usare go get(invece di go install) è ciò che è nel README nella pagina GitHub. La mia versione Go è go version go1.2 linux/amd64.


3
GOROOT esportato ma non GOPATH? GOROOT è diverso da GOBIN? Come hai installato Go? Come hai impostato il tuo ambiente?
Volker

Ho installato go seguendo la pagina golang.org/doc/install . Non ero sicuro di cosa mettere per GOPATH.
q3d

Risposte:


102

I problemi riguardano un invalido GOROOT.

Penso che tu abbia installato Go in /usr/local/go.
Quindi cambia il tuo GOROOTpercorso al valore di /usr/local/go/bin.

Sembra che tu volessi avere il tuo spazio di lavoro (GOPATH) situato in /home/me/go.

Questo potrebbe risolvere il tuo problema.
Aggiungilo in fondo al tuo profilo bash, che si trova qui =>$HOME/.profile

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

Assicurati di rimuovere i vecchi riferimenti di GOROOT.

Quindi prova a installare di nuovo web.go.

Se non funziona, fai in modo che Ubuntu installi Go per te.

sudo apt-get install golang

Esercitazione video: http://www.youtube.com/watch?v=2PATwIfO5ag


15
Non dovresti quasi mai impostare GOROOT. La tua dichiarazione PATH non ha colpito / usr / local / go / bin. Inoltre, va notato che i pacchetti ubuntu sono un po 'indietro rispetto alla versione ufficiale, che è 1.2.
JimB

2
Quando ho seguito le istruzioni per l'installazione dal sito ufficiale (installa dal file tar in / usr / local) ho ricevuto l'errore sopra fino a quando non ho cambiato GOROOT come sopra.
Drew

1
Appena installato golang 1.3 fresco su fedora 20 e go getdà lo stesso errore. GOROOTè impostato su /usr, va installato in / usr, non / usr / local. Imposta GOPATHsu $HOME/go. Qualche idea su cos'altro controllare?
Dfr

15
Rispondendo a me stesso: il disagio GOROOTsembra aver risolto il problema.
Dfr

4
+1 per non aver impostato GOROOT. L'ho disattivato, mi sono assicurato che fosse disattivato e echo $GOROOTpoi ho controllato che GO lo avesse ancora nell'ambiente con go envcui lo faceva ed era /usr/local/godove sono andato installato (quindi non è necessario impostarlo in ogni caso)
StartupGuy

36

Ho installato Go with brewsu OSX 10.11 e ho scoperto che dovevo impostare GOROOT:

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

(Ovviamente sostituisci la versione in questo percorso con la versione go che hai)

Brew utilizza collegamenti simbolici, che stavano ingannando il gotool. Quindi segui i link a casa.


Ah, finalmente, ho trovato qualcosa che ha funzionato. Grazie Eric!
Mir Adnan

23

Ho avuto esattamente lo stesso problema, dopo essere passato dalla vecchia versione go (installata dal vecchio PPA) ai pacchetti predefiniti più recenti (1.2.1) in Ubuntu 14.04.

Il primo passo è stato eliminare il go esistente:

sudo apt-get purge golang*

Che emette i seguenti avvisi:

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

Sembra che la rimozione di go lasci alcuni file dietro, il che a sua volta può confondere l'installazione più recente. Più precisamente, l'installazione stessa verrà completata correttamente, ma in seguito qualsiasi comando go, come "vai a prendere qualcosa" dà quegli errori di "percorso di importazione non riconosciuto".

Tutto quello che dovevo fare era rimuovere prima quelle directory, reinstallare golang e tutto funziona a meraviglia (supponendo che tu abbia impostato anche GOPATH)

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

Ho anche dovuto rimuovere/usr/local/go/
Natim

Inoltre ho dovuto rimuovere / usr / bin / go.
eatonphil

6

Perché GFW ti ha proibito di accedere a golang.org! E quando uso il proxy, può funzionare bene.

puoi guardare le informazioni usando il comando go get -v -u golang.org/x/oauth2


1
Questo è esattamente il problema che ho mentre sono in Cina. Dopo aver impostato $ http_proxy, posso installare il pacchetto senza errori.
cinereo

1
Non solo bloccato, ma anche il DNS è inquinato. Per prima cosa vai a http://ping.eu/nslookup/per trovare l'IP corretto del dominio, impostalo nel file hosts, quindi utilizza un proxy per il download. export http_proxy=127.0.0.1:1080 https_proxy=127.0.0.1:1080 A volte vuoi solo dire la parola F al
governo

4

$ unset GOROOTha funzionato per me. Poiché la maggior parte delle risposte suggerisce che il tuo GOROOT non è valido.


2

Ho avuto lo stesso problema su MacOS 10.10. E ho scoperto che il problema causato dalla shell OhMyZsh. Poi sono tornato a bash tutto è andato bene.

Ecco il mio go env

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 envda quando non ha funzionato o da quando ha funzionato? Probabilmente non è stato "causato da [altra shell]", piuttosto è stato probabilmente un errore GOPATHnell'impostazione corretta in quell'altra shell. La famiglia di shell csh e zsh non usa gli stessi file di avvio (cioè no ~/.profile). In particolare zshutilizza $ZDOTDIR/.zshenve $ZDOTDIR/.zprofile(dove $ZDOTDIRpredefinito $HOME).
Dave C

1

Le cause più comuni sono:
1. GOROOT configurato in modo errato
OPPURE
2. GOPATH non impostato


0

Ho avuto lo stesso problema dopo aver aggiornato go1.2 a go1.4.

Ho rinominato src in _src nel mio GOPATH, quindi ho creato un file go get -v

Ha funzionato, quindi ho eliminato _src.

Spero che sia d'aiuto.


0

Ho riscontrato questo problema durante l'installazione di un pacchetto diverso e potrebbe essere causato dalla configurazione GOROOT e GOPATH sul tuo PATH. Tendo a non impostare GOROOT perché la mia installazione di OS X lo ha gestito (credo) per me.

  1. Assicurati quanto segue nel tuo .profile (o ovunque memorizzi la configurazione del profilo: .bash_profile, .zshrc, .bashrc, ecc.):

    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin
  2. Inoltre, probabilmente lo vorrai anche tu unset GOROOT, nel caso in cui anche il percorso non sia corretto.

  3. Inoltre, assicurati di pulire il tuo PERCORSO, in modo simile a quello che ho fatto di seguito, appena prima dell'assegnazione di GOPATH, ovvero:

    export PATH=$HOME/bin:/usr/local/bin:$PATH
    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin
  4. Poi, source <.profile> per attivare

  5. riprova go get
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.