"Chemin d’importation non reconnu" avec go get


93

J'essaye d'installer un web.go, mais les go get github.com/hoisie/webretours en cours d'exécution

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"

et cela continue pendant un certain temps avec divers paquets, avant de ne rien renvoyer d'autre. go envDonne moi:

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"

Comment puis-je installer web.go? Utiliser go get(plutôt que go install) est ce qui se trouve dans le README sur la page github. Ma version Go est go version go1.2 linux/amd64.


3
Exporté GOROOT mais pas GOPATH? GOROOT diffère de GOBIN? Comment avez-vous installé Go? Comment avez-vous mis en place votre environnement?
Volker

J'ai installé go en suivant la page golang.org/doc/install . Je ne savais pas quoi mettre pour GOPATH.
q3d

Réponses:


101

Les problèmes concernent un invalide GOROOT.

Je pense que vous avez installé Go in /usr/local/go.
Alors changez votre GOROOTchemin à la valeur de /usr/local/go/bin.

Il semble que vous vouliez avoir votre espace de travail (GOPATH) situé à /home/me/go.

Cela pourrait résoudre votre problème.
Ajoutez ceci au bas de votre profil bash, situé ici =>$HOME/.profile

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

Assurez-vous de supprimer les anciennes références de GOROOT.

Ensuite, essayez à nouveau d'installer web.go.

Si cela ne fonctionne pas, demandez à Ubuntu d'installer Go pour vous.

sudo apt-get install golang

Tutoriel vidéo: http://www.youtube.com/watch?v=2PATwIfO5ag


15
Vous ne devriez presque jamais régler GOROOT. Votre déclaration PATH ne frappe pas / usr / local / go / bin. De plus, il convient de noter que les packages ubuntu sont un peu en retard par rapport à la version officielle, qui est la 1.2.
JimB

2
Lorsque j'ai suivi les instructions d'installation go du site officiel (installer à partir du fichier tar dans / usr / local), j'ai reçu l'erreur ci-dessus jusqu'à ce que je change le GOROOT comme ci-dessus.
Drew

1
Je viens d'installer le nouveau golang 1.3 sur fedora 20 et go getdonne la même erreur. GOROOTest réglé sur /usr, va lui-même installé dans / usr, pas / usr / local. Réglez GOPATHsur $HOME/go. Une idée de quoi vérifier d'autre?
Dfr

15
Me répondre: les désarmements GOROOTsemblent résolus le problème.
Dfr

4
+1 pour ne pas régler GOROOT. Je l'ai désarmé, je me suis assuré qu'il n'était pas réglé avec, echo $GOROOTpuis j'ai vérifié que GO l'avait toujours dans l'environnement avec go envlequel il le faisait et qu'il était /usr/local/golà où je l'ai installé (donc pas besoin de le configurer dans tous les cas)
StartupGuy

36

J'ai installé Go avec brew sur OSX 10.11 et j'ai constaté que je devais définir GOROOT:

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

(Bien sûr, remplacez la version de ce chemin par la version go que vous avez)

Brew utilise des liens symboliques, qui trompaient le gotool. Alors suivez les liens vers la maison.


Ah, enfin, j'ai trouvé quelque chose qui fonctionnait. Merci Eric!
Mir Adnan

23

J'ai eu exactement le même problème, après être passé de l'ancienne version go (installée de l'ancien PPA) aux packages par défaut plus récents (1.2.1) dans ubuntu 14.04.

La première étape consistait à purger les go existants:

sudo apt-get purge golang*

Qui génère les avertissements suivants:

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

Il semble que la suppression de go laisse certains fichiers derrière, ce qui peut perturber les nouvelles installations. Plus précisément, l'installation elle-même se terminera bien, mais ensuite toute commande go, comme "go get something" donne ces erreurs "chemin d'importation non reconnu".

Tout ce que j'avais à faire était de supprimer ces répertoires d'abord, de réinstaller Golang, et tout fonctionne comme un charme (en supposant que vous définissiez également GOPATH)

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

J'ai aussi dû retirer/usr/local/go/
Natim

J'ai également dû supprimer / usr / bin / go.
eatonphil

6

Parce que GFW vous a interdit d'accéder à golang.org! Et quand j'utilise le proxy, cela peut bien fonctionner.

vous pouvez consulter les informations en utilisant la commande go get -v -u golang.org/x/oauth2


1
C'est exactement le problème que j'ai car je suis en Chine. Après avoir défini $ http_proxy, je peux installer le package sans erreur.
ashen

1
Non seulement bloqué, mais le DNS est également pollué. Accédez d'abord à http://ping.eu/nslookup/pour trouver l'adresse IP correcte du domaine, définissez-la dans le fichier d'hôtes, puis utilisez un proxy pour télécharger. export http_proxy=127.0.0.1:1080 https_proxy=127.0.0.1:1080 Parfois, vous voulez juste dire le mot F au gouvernement
Mr.Wang de Next Door

4

$ unset GOROOTtravaillé pour moi. Comme la plupart des réponses suggèrent que votre GOROOT n'est pas valide.


2

J'ai eu le même problème sur MacOS 10.10. Et j'ai trouvé que le problème causé par le shell OhMyZsh. Puis je suis retourné à bash tout s'est bien passé.

Voici mon 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

Est-ce à go envpartir du moment où ça n'a pas fonctionné ou quand ça a fonctionné? Ce n'était probablement pas "causé par [un autre shell]", mais plutôt un échec de configuration correcte GOPATHdans cet autre shell. Les familles de shells csh et zsh n'utilisent pas les mêmes fichiers de démarrage (c'est-à-dire non ~/.profile). En particulier zshutilise $ZDOTDIR/.zshenvet $ZDOTDIR/.zprofile(où la valeur par $ZDOTDIRdéfaut est $HOME).
Dave C

1

Les causes les plus courantes sont:
1. Un GOROOT
OU mal configuré
2. GOPATH n'est pas défini


0

J'ai eu le même problème après avoir mis à niveau go1.2 vers go1.4.

J'ai renommé src en _src dans mon GOPATH puis j'ai fait un go get -v

Cela a fonctionné puis j'ai supprimé _src.

J'espère que ça aide.


0

J'ai rencontré ce problème lors de l'installation d'un package différent, et cela pourrait être causé par la configuration GOROOT et GOPATH sur votre PATH. J'ai tendance à ne pas configurer GOROOT parce que mon installation OS X l'a géré (je crois) pour moi.

  1. Vérifiez les éléments suivants dans votre .profile (ou partout où vous stockez la configuration du profil: .bash_profile, .zshrc, .bashrc, etc.):

    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin
  2. De plus, vous voudrez probablement aussi le faire au unset GOROOTcas où ce chemin serait également incorrect.

  3. De plus, assurez-vous de nettoyer votre PATH, de la même manière que ce que j'ai fait ci-dessous, juste avant l'affectation GOPATH, c'est-à-dire:

    export PATH=$HOME/bin:/usr/local/bin:$PATH
    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin
  4. Ensuite, source <.profile>pour activer

  5. recommencez go get
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.