Je veux installer json2csv en utilisant go get github.com/jehiah/json2csv
mais je reçois cette erreur:
package github.com/jehiah/json2csv: cannot download, $GOPATH not set. For more details see: go help go path
Une aide sur la façon de résoudre ce problème sur MacOS?
[Mise à jour: à partir de Go 1.8, GOPATH
défaut $HOME/go
, mais vous pouvez toujours trouver cela utile si vous souhaitez comprendre la disposition de GOPATH
, la personnaliser, etc.]
Le site officiel Go discute de GOPATH et de la façon de disposer un répertoire d’espace de travail .
export GOPATH="$HOME/your-workspace-dir/"
– lancez-le dans votre shell, puis ajoutez-le à ~/.bashrc
ou équivalent pour qu’il soit configuré à l’avenir. Go va installer les paquets sous les sous-répertoires src/
, bin/
et pkg/
, là. Vous voudrez mettre vos propres paquets quelque part sous $GOPATH/src
, comme $GOPATH/src/github.com/myusername/
si vous voulez publier sur GitHub. Vous voudrez probablement aussi export PATH=$PATH:$GOPATH/bin
dans votre .bashrc
afin de pouvoir exécuter des programmes compilés sous $GOPATH
.
Éventuellement, via Rob Pike , vous pouvez également définir CDPATH
donc cd
est plus rapide à comstackr dans bash: export CDPATH=.:$GOPATH/src/github.com:$GOPATH/src/golang.org/x
signifie que vous pouvez simplement tapez cd net/html
au lieu de cd $GOPATH/src/golang.org/x/net/html
.
Keith Rarick note que vous pouvez définir GOPATH=$HOME
pour placer les répertoires src/
, pkg/
et bin/
Go directement sous votre répertoire. Cela peut être intéressant (par exemple, vous pouvez déjà avoir $HOME/bin
sur votre chemin), mais bien sûr, certaines personnes utilisent plusieurs espaces de travail, etc.
Celui-ci a travaillé
Configuration de l’environnement de développement Go sur Ubuntu, et comment réparer $ GOPATH / $ GOROOT
Pas
mkdir ~/go
Définissez $ GOPATH dans .bashrc,
export GOPATH=~/go export PATH=$PATH:$GOPATH/bin
Je l’ai installé en utilisant l’ brew
.
$ brew install go
Lorsque cela a été fait si vous exécutez cette commande d’infusion, les informations suivantes s’affichent:
$ brew info go go: stable 1.4.2 (bottled), HEAD Go programming environment https://golang.org /usr/local/Cellar/go/1.4.2 (4676 files, 158M) * Poured from bottle From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/go.rb ==> Options --with-cc-all Build with cross-comstackrs and runtime support for all supported platforms --with-cc-common Build with cross-comstackrs and runtime support for darwin, linux and windows --without-cgo Build without cgo --without-godoc godoc will not be installed for you --without-vet vet will not be installed for you --HEAD Install HEAD version ==> Caveats As of go 1.2, a valid GOPATH is required to use the `go get` command: https://golang.org/doc/code.html#GOPATH You may wish to add the GOROOT-based install location to your PATH: export PATH=$PATH:/usr/local/opt/go/libexec/bin
Les pièces importantes sont ces lignes:
/usr/local/Cellar/go/1.4.2 (4676 fichiers, 158M) *
export PATH = $ PATH: / usr / local / opt / go / libexec / bin
Cela montre où GO a été installé. Nous devons faire ce qui suit pour configurer l’environnement de GO:
$ export PATH=$PATH:/usr/local/opt/go/libexec/bin $ export GOPATH=/usr/local/opt/go/bin
Vous pouvez alors vérifier en utilisant GO pour voir s’il est configuré correctement:
$ go env GOARCH="amd64" GOBIN="" GOCHAR="6" GOEXE="" GOHOSTARCH="amd64" GOHOSTOS="darwin" GOOS="darwin" GOPATH="/usr/local/opt/go/bin" GORACE="" GOROOT="/usr/local/Cellar/go/1.4.2/libexec" GOTOOLDIR="/usr/local/Cellar/go/1.4.2/libexec/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"
Semble bien, donc permet d’installer json2csv
:
$ go get github.com/jehiah/json2csv $
Qu’est-ce qui vient de se passer? Il l’a installé. Vous pouvez vérifier comme ceci:
$ $ ls -l $GOPATH/bin total 5248 -rwxr-xr-x 1 sammingolelli staff 2686320 Jun 9 12:28 json2csv
OK, alors pourquoi ne puis-je pas taper json2csv
dans mon shell? C’est parce que le répertoire /bin
sous $GOPATH
n’est pas sur votre $PATH
.
$ type -f json2csv -bash: type: json2csv: not found
Alors ajoutons-le temporairement:
$ export PATH=$GOPATH/bin:$PATH
Et re-vérifier:
$ type -f json2csv json2csv is hashed (/usr/local/opt/go/bin/bin/json2csv)
Maintenant c’est là:
$ json2csv --help Usage of json2csv: -d=",": delimiter used for output values -i="": /path/to/input.json (optional; default is stdin) -k=[]: fields to output -o="": /path/to/output.json (optional; default is stdout) -p=false: prints header to output -v=false: verbose output (to stderr) -version=false: print version ssortingng
Ajoutez les modifications apscopes à $PATH
et $GOPATH
à votre $HOME/.bash_profile
pour les faire persister entre les redémarrages.
En général, je recommande toujours cette vidéo officielle de Go pour avoir un aperçu rapide de la question:
http://www.youtube.com/watch?v=XCsL89YtqCs
Il est plus facile d’être montré que d’être dit.
@jwfearn a paraphrasé la partie importante de la vidéo:
export GOPATH="${HOME}/gocode"; export PATH="${PATH}:${GOPATH}/bin"; mkdir -p "${GOPATH}"
Pour MAC, cela a bien fonctionné pour moi.
sudo nano /etc/bashrc
et ajoutez le ci-dessous à la fin du fichier
export PATH=$PATH:/usr/local/opt/go/libexec/bin export GOPATH=/usr/local/opt/go/bin
Cela devrait résoudre le problème. Essayez d’ouvrir un nouveau terminal et faites écho à $ GOPATH, vous devriez voir la valeur correcte.
J’ai trouvé plus facile de le faire comme ça:
export GOROOT=$HOME/go export GOPATH=$GOROOT/bin export PATH=$PATH:$GOPATH
(pour Mac)
J’ai essayé toutes ces réponses et, pour une raison encore inconnue, aucune n’a fonctionné.
J’ai dû “forcer” le GOPATH en définissant la variable d’environnement pour chaque commande qui l’exigeait. Par exemple:
sudo env GOPATH=$HOME/goWorkDirectory go build ...
Même le glide
me donnait l’erreur GOPATH not set
. Résolu, encore une fois, par “gavage forcé”: j’ai essayé toutes ces réponses et, pour une raison encore inconnue, aucune n’a fonctionné.
J’ai dû “forcer” le GOPATH en définissant la variable d’environnement pour chaque commande qui l’exigeait.
sudo env GOPATH=$HOME/goWorkDirectory glide install
J’espère que cela aide quelqu’un.
Il suffit d’ export GOPATH="/whatever/you/like/your/GOPATH/to/be"
.
Votre $GOROOT
ne doit pas être configuré. Vous $GOPATH
devrait être mis à $HOME/go
en tapant export $GOPATH=$HOME/go
Veuillez taper export GOROOT=""
pour résoudre votre problème.
Si vous rencontrez ce problème après avoir $GOPATH
, c’est peut-être parce que vous l’exécutez avec un shell non pris en charge. J’utilisais du fish
et ça ne marchait pas, le lancer avec bash
marchait bien.
Vous pouvez utiliser la solution “export” comme le suggèrent les autres. Je voudrais vous proposer une autre solution pour une commodité permanente: vous pouvez utiliser n’importe quel chemin en tant que GOPATH lors de l’exécution des commandes Go.
Tout d’abord, vous devez télécharger un petit outil nommé gost
: https://github.com/byte16/gost/releases . Si vous utilisez Ubuntu, vous pouvez télécharger la version Linux ( https://github.com/byte16/gost/releases/download/v0.1.0/gost_linux_amd64.tar.gz ).
Ensuite, vous devez exécuter les commandes ci-dessous pour le décompresser:
$ cd /path/to/your/download/directory $ tar -xvf gost_linux_amd64.tar.gz
Vous obtiendrez un gost
exécutable. Vous pouvez le déplacer dans /usr/local/bin
pour une utilisation pratique:
$ sudo mv gost /usr/local/bin
Exécutez la commande ci-dessous pour append le chemin que vous souhaitez utiliser en tant que GOPATH dans le pathspace gost
maintient. Il est nécessaire de donner au chemin un nom que vous utiliseriez plus tard.
$ gost add foo /home/foobar/bar # 'foo' is the name and '/home/foobar/bar' is the path
Exécutez n’importe quelle commande Go que vous voulez dans le format:
gost goCommand [-p {pathName}] -- [goFlags...] [goArgs...]
Par exemple, vous voulez go get github.com/go-sql-driver/mysql
avec /home/foobar/bar
comme GOPATH, faites-le comme ci-dessous:
$ gost get -p foo -- github.com/go-sql-driver/mysql # 'foo' is the name you give to the path above.
Cela vous aiderait à définir le GOPATH et à exécuter la commande. Mais rappelez-vous que vous avez ajouté le chemin dans l’ gost
de gost
de gost . Si vous êtes à un niveau quelconque de sous-répertoires de /home/foobar/bar
, vous pouvez même exécuter la commande ci-dessous qui ferait la même chose en bref:
$ gost get -- github.com/go-sql-driver/mysql
gost
est un outil simple de Go qui peut vous aider à gérer GOPATH et exécuter les commandes Go. Pour plus d’informations sur son utilisation pour exécuter d’autres commandes Go, vous pouvez simplement lancer gost help goCmdName
. Par exemple, vous voulez en savoir plus sur l’ install
, tapez simplement des mots ci-dessous dans:
$ gost help install
Vous pouvez également trouver plus de détails dans le README du projet: https://github.com/byte16/gost/blob/master/README.md
Lancez ‘go env’ et voyez où votre GOPATH pointe actuellement. Si vous changez de répertoire, la commande “go get..etc” devrait fonctionner.
Ce problème m’est apparu dans pi framboise. Je me suis connecté via le client VNC Le problème a persisté malgré la configuration et l’exportation de GOPATH. Ensuite, la commande “go get” sans sudo a fonctionné parfaitement.
J’ai dû exécuter une application en tant que root (pour ouvrir un serveur Web sur le port 80), cela a généré une erreur car l’utilisateur de sudo a un environnement différent de celui de l’utilisateur normal, GOPATH n’était donc pas défini.
Si quelqu’un d’autre a ce problème, ajoutez -E
à la commande, cela préservera l’environnement utilisateur.
sudo -E go run main.go
Pour plus d’infos voir la discussion ici: Google Groupes – Problème GOPATH