"Nicht erkannter Importpfad" mit go get

91

Ich versuche eine zu installieren web.go, aber läuft go get github.com/hoisie/webzurück

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"

und dies dauert eine Weile mit verschiedenen Paketen, bevor nichts anderes zurückgegeben wird. go envgibt mir:

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"

Wie kann ich installieren web.go? Verwenden go get(anstatt go install) finden Sie in der README-Datei auf der Github-Seite. Meine Go-Version ist go version go1.2 linux/amd64.

q3d
quelle
3
GOROOT exportiert, aber kein GOPATH? GOROOT unterscheidet sich von GOBIN? Wie haben Sie Go installiert? Wie haben Sie Ihre Umgebung eingerichtet?
Volker
Ich habe go installiert, indem ich der Seite golang.org/doc/install gefolgt bin . Ich war mir nicht sicher, was ich für GOPATH setzen sollte.
Q3d

Antworten:

99

Die Probleme beziehen sich auf eine ungültige GOROOT.

Ich denke du hast Go in installiert /usr/local/go.
Ändern Sie also Ihren GOROOTPfad auf den Wert von /usr/local/go/bin.

Anscheinend wollten Sie Ihren Arbeitsbereich (GOPATH) unter haben /home/me/go.

Dies könnte Ihr Problem beheben.
Fügen Sie dies am Ende Ihres Bash-Profils hinzu, das sich hier befindet =>$HOME/.profile

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

Stellen Sie sicher, dass Sie die alten Referenzen von entfernen GOROOT.

Versuchen Sie dann erneut, web.go zu installieren.

Wenn das nicht funktioniert, lassen Sie Ubuntu Go für Sie installieren.

sudo apt-get install golang

Video-Tutorial: http://www.youtube.com/watch?v=2PATwIfO5ag

Larry Battle
quelle
15
Sie sollten GOROOT fast nie einstellen. Ihre PATH-Deklaration trifft / usr / local / go / bin nicht. Beachten Sie auch, dass die Ubuntu-Pakete etwas hinter der offiziellen Version 1.2 zurückliegen.
JimB
2
Als ich den Anweisungen zur Installation auf der offiziellen Website folgte (Installation von der TAR-Datei in / usr / local), erhielt ich den obigen Fehler, bis ich den GOROOT wie oben geändert habe.
Drew
1
Gerade frisch Golang 1.3 auf Fedora 20 installiert und go getgibt den gleichen Fehler. GOROOTist auf eingestellt, /usrwird selbst in / usr installiert, nicht in / usr / local. Set GOPATHzu $HOME/go. Irgendeine Idee, was noch zu überprüfen ist?
Dfr
15
Ich antworte mir: Das Einstellen GOROOTscheint das Problem behoben zu haben.
Dfr
4
+1 für das Nichteinstellen von GOROOT. Ich habe es deaktiviert, habe sichergestellt, dass es deaktiviert wurde, und echo $GOROOTdann überprüft, ob GO es noch in der Umgebung hat, in go envder es ausgeführt wurde, und an der Stelle, /usr/local/goan der ich es installiert habe (daher muss es auf keinen Fall eingestellt werden)
StartupGuy
36

Ich habe Go with brewunter OSX 10.11 installiert und musste Folgendes einstellen GOROOT:

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

(Ersetzen Sie natürlich die Version in diesem Pfad durch die Go-Version, die Sie haben.)

Brew verwendet Symlinks, die das Gotool zum Narren gehalten haben. Folgen Sie also den Links nach Hause.

Eric
quelle
Ah, endlich habe ich etwas gefunden, das funktioniert hat. Danke Eric!
Mir Adnan
23

Ich hatte genau das gleiche Problem, nachdem ich von der alten Go-Version (installiert von der alten PPA) zu neueren (1.2.1) Standardpaketen in Ubuntu 14.04 gewechselt war.

Der erste Schritt war das Löschen des vorhandenen Go:

sudo apt-get purge golang*

Welche gibt folgende Warnungen aus:

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

Es sieht so aus, als ob beim Entfernen von go einige Dateien zurückbleiben, was wiederum die neuere Installation verwirren kann. Genauer gesagt, die Installation selbst wird einwandfrei abgeschlossen, aber danach gibt jeder go-Befehl wie "go get some" die Fehler "nicht erkannter Importpfad" aus.

Alles, was ich tun musste, war, zuerst diese Verzeichnisse zu entfernen, Golang neu zu installieren und alles funktioniert wie ein Zauber (vorausgesetzt, Sie setzen auch GOPATH).

# careful!
sudo rm -rf /usr/lib/go /usr/lib/go/src
sudo apt-get install golang-go golang-go.tools
Jareks
quelle
Ich musste auch entfernen/usr/local/go/
Natim
Musste auch / usr / bin / go entfernen.
Eatonphil
6

Weil GFW Ihnen den Zugriff auf golang.org verboten hat! Und wenn ich den Proxy benutze, kann es gut funktionieren.

Sie können die Informationen mit dem Befehl anzeigen go get -v -u golang.org/x/oauth2

jefby
quelle
1
Dies ist genau das Problem, das ich in China habe. Nach dem Festlegen von $ http_proxy kann ich das Paket ohne Fehler installieren.
Aschfahl
1
Nicht nur blockiert, sondern auch der DNS ist verschmutzt. Gehen Sie zuerst zu http://ping.eu/nslookup/, um die richtige IP der Domain zu finden, setzen Sie diese in die Hosts-Datei und verwenden Sie dann einen Proxy zum Herunterladen. export http_proxy=127.0.0.1:1080 https_proxy=127.0.0.1:1080 Manchmal möchten Sie einfach das F-Wort an die Regierung sagen
Mr. Wang von Next Door
4

$ unset GOROOTarbeitete für mich. Wie die meisten Antworten vermuten lassen, ist Ihr GOROOT ungültig.

noelmcloughlin
quelle
2

Ich hatte das gleiche Problem unter MacOS 10.10. Und ich fand, dass das Problem durch OhMyZsh Shell verursacht. Dann wechselte ich zurück zu Bash, alles ging in Ordnung.

Hier ist mein 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
Igor Barinov
quelle
Ist das go envvon wann es nicht funktioniert hat oder wann es funktioniert hat? Es war wahrscheinlich nicht "verursacht durch [andere Shell]", sondern es war wahrscheinlich ein Fehler, GOPATHdiese andere Shell korrekt einzustellen . Die Shells csh- und zsh-Familie verwenden nicht dieselben Startdateien (dh nein ~/.profile). Insbesondere zshverwendet $ZDOTDIR/.zshenvund $ZDOTDIR/.zprofile(wo $ZDOTDIRstandardmäßig $HOME).
Dave C
0

Ich hatte das gleiche Problem, nachdem ich go1.2 auf go1.4 aktualisiert hatte.

Ich habe src in meinem GOPATH in _src umbenannt und dann a go get -v

Es hat funktioniert, dann habe ich _src gelöscht.

Ich hoffe es hilft.

Erol
quelle
0

Bei der Installation eines anderen Pakets ist dieses Problem aufgetreten. Dies kann durch die Konfiguration von GOROOT und GOPATH auf Ihrem PATH verursacht werden. Ich neige dazu, GOROOT nicht einzustellen, weil meine OS X-Installation dies (glaube ich) für mich erledigt hat.

  1. Stellen Sie Folgendes in Ihrem .profile sicher (oder wo immer Sie die Profilkonfiguration speichern: .bash_profile, .zshrc, .bashrc usw.):

    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin
  2. Sie möchten wahrscheinlich unset GOROOTauch, falls dieser Pfad ebenfalls falsch ist.

  3. Stellen Sie außerdem sicher, dass Sie Ihren PFAD reinigen, ähnlich wie ich es unten getan habe, kurz vor der GOPATH-Zuweisung, dh:

    export PATH=$HOME/bin:/usr/local/bin:$PATH
    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin
  4. Dann source <.profile>zu aktivieren

  5. wiederholen go get
Das ist AMorais
quelle
0

Die häufigsten Ursachen sind:
1. Ein falsch konfigurierter GOROOT
ODER
2. GOPATH ist nicht eingestellt

Clyde D'Cruz
quelle