web-dev-qa-db-fra.com

"chemin d'importation non reconnu" avec go get

J'essaie d'installer un web.go, mais l'exécution de go get github.com/hoisie/web renvoie

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 retourner d'autre. go env me donne:

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 est dans le README sur la page github. Ma version de Go est go version go1.2 linux/AMD64.

73
q3d

Les problèmes concernent une variable GOROOT non valide.

Je pense que vous avez installé Go in /usr/local/go.
Modifiez donc votre chemin GOROOT avec la valeur /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 d’installer à nouveau web.go.

Si cela ne fonctionne pas, installez Ubuntu alors Go for you.

Sudo apt-get install golang

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

81
Larry Battle

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

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

(Bien sûr, remplacez la version dans ce chemin avec la version que vous avez)

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

29
Eric

J'ai eu exactement le même problème, après le passage de l'ancienne version de go (installée à partir de l'ancien PPA) vers des packages par défaut plus récents (1.2.1) dans Ubuntu 14.04.

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

Sudo apt-get purge golang*

Quelles sorties suivent les avertissements:

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 quelques fichiers derrière, ce qui peut à son tour confondre une nouvelle installation. Plus précisément, l’installation elle-même s’achèvera très bien, mais toute commande go, comme "go get quelque chose", donnera ces erreurs "chemin d’importation non reconnu".

Tout ce que j'avais à faire était de supprimer ces répertoires en premier, 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
21
jareks

Parce que GFW vous a interdit d'accéder à golang.org!.

vous pouvez consulter les informations à l'aide de la commande go get -v -u golang.org/x/oauth2

5
jefby

$ unset GOROOT a travaillé pour moi. Comme la plupart des réponses suggèrent que votre GOROOT est invalide.

3
noelmcloughlin

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

Voici mon 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
2
Igor Barinov

J'avais un problème similaire. Mais c’est uniquement parce que le paquet que j’installais ne se trouve pas dans le répertoire $GOPATH/src/; quand j’y ai installé tout fonctionnait correctement (sauf que le nom du paquet est différent du problème).

0
shintaroid

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

0
Clyde D'Cruz

J'ai rencontré ce problème lors de l'installation d'un autre package. La configuration de GOROOT et GOPATH sur votre PATH pourrait en être la cause. J'ai tendance à ne pas définir GOROOT car mon installation OS X l'a géré (je crois) pour moi.

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

    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin
    
  2. En outre, vous souhaiterez probablement unset GOROOT, au cas où ce chemin serait également incorrect.

  3. De plus, assurez-vous de nettoyer votre PATH, comme ce que j’ai fait ci-dessous, juste avant la mission GOPATH, c.-à-d.:

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

  5. réessayer go get
0
ThatsAMorais

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

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

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

J'espère que ça aide.

0
Erol