ne peut pas télécharger, $GOPATH pas défini

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 fixer ce sur MacOS?

129
demandé sur Mona Jalal 2013-12-17 12:06:03

14 réponses

[mise à Jour: comme d'Aller 1.8, GOPATH par défaut $HOME/go , mais vous pouvez toujours trouver cela utile si vous voulez comprendre le GOPATH mise en page, de le personnaliser, etc.]

L'officiel de Aller site explique GOPATH et comment disposer d'un espace de travail répertoire .

export GOPATH="$HOME/your-workspace-dir/" -- exécutez-le dans votre interpréteur de commandes, puis ajoutez-le à ~/.bashrc ou l'équivalent pour qu'il soit défini pour vous dans le futur. Allez va installer paquets dans les sous-répertoires src/ , bin/ et pkg/ . Vous voudrez mettre vos propres paquets quelque part sous $GOPATH/src , comme $GOPATH/src/github.com/myusername/ si vous voulez publier GitHub. Vous voudrez probablement aussi export PATH=$PATH:$GOPATH/bin dans votre .bashrc pour pouvoir exécuter des programmes compilés sous $GOPATH .

Optionally, via Rob Pike , vous pouvez également définir CDPATH de sorte qu'il est plus rapide à cd d'empaqueter des dirs dans bash: export CDPATH=.:$GOPATH/src/github.com:$GOPATH/src/golang.org/x signifie que vous pouvez simplement taper cd net/html au lieu de cd $GOPATH/src/golang.org/x/net/html .

Keith Rarick notes , vous pouvez régler "1519180920 de" faire Aller src/ , pkg/ et bin/ répertoires droit en vertu de votre répertoire personnel. Qui peut être sympa (par exemple, vous pourriez déjà avoir $HOME/bin dans votre chemin) mais bien sûr, certaines personnes utilisent plusieurs espaces de travail, etc.

122
répondu twotwotwo 2017-05-20 21:57:51

celui-ci a fonctionné

mise en place de Go environnement de développement sur Ubuntu, et comment fixer $GOPATH / $ GOROOT

Étapes

mkdir ~/go

Set $GOPATH in .bashrc,

export GOPATH=~/go
export PATH=$PATH:$GOPATH/bin
74
répondu suryakrupa 2018-03-11 02:44:24

à l'Aide de brassage

Je l'ai installé en utilisant brew .

$ brew install go

quand il a été fait si vous exécutez cette commande brew il affichera les informations suivantes:

$ 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-compilers and runtime support for all supported platforms
--with-cc-common
    Build with cross-compilers 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 il y a ces lignes:

/usr/local/Cave/go/1.4.2 (4676 fichiers, 158 M) *

export PATH=$PATH:/usr / local/opt/go/libexec / bin

mise en place de L'environnement de GO

qui 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 si elle est configurée 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"

mise en place de json2csv

semble bon, donc installons json2csv :

$ go get github.com/jehiah/json2csv
$

que s'est-il passé? Il est installé il. 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 je ne peux pas taper json2csv dans ma coquille? 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-check:

$ type -f json2csv
json2csv is hashed (/usr/local/opt/go/bin/bin/json2csv)

Maintenant, il 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 string

ajoutez les modifications que nous avons apportées $PATH et $GOPATH à votre $HOME/.bash_profile pour les faire subsister entre les redémarrages.

28
répondu slm 2015-06-09 16:31:28

voir une vidéo

en général, je recommande toujours Cette vidéo officielle de Go pour obtenir un aperçu rapide sur le sujet:

http://www.youtube.com/watch?v=XCsL89YtqCs

Il est plus facile d'être montré que pour être dit.

@jwfearn a paraphrasé la partie importante de la vidéo:

export GOPATH="${HOME}/gocode"; export PATH="${PATH}:${GOPATH}/bin"; mkdir -p "${GOPATH}"

16
répondu 0x434D53 2017-07-08 06:24:01

pour MAC cela a bien fonctionné pour moi.

sudo nano /etc/bashrc

et ajouter ce qui suit à 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 echo $GOPATH vous devriez voir la valeur correcte.

3
répondu Shasti 2016-07-14 18:54:26

j'ai trouvé plus facile de le faire comme ceci:

export GOROOT=$HOME/go
export GOPATH=$GOROOT/bin
export PATH=$PATH:$GOPATH
3
répondu João Fernandes 2017-04-04 10:33:44

(pour MAC)

j'ai essayé toutes ces réponses et, pour une raison encore inconnue, aucune n'a fonctionné.

j'ai dû" alimenter de force " le GOPATH en réglant la variable d'environnement pour chaque commande qui l'exigeait. Par exemple:

sudo env GOPATH=$HOME/goWorkDirectory go build ...

même glide me donnait l'erreur GOPATH not set . Résolu, encore une fois, en " nourrissant de force": J'ai essayé tous ces des réponses et, pour une raison encore inconnue, aucune n'a fonctionné.

j'ai dû" alimenter de force " le GOPATH en réglant la variable d'environnement pour chaque commande qui l'exigeait.

sudo env GOPATH=$HOME/goWorkDirectory glide install

J'espère que ça aidera quelqu'un.

2
répondu zephel 2017-01-24 21:18:42

Votre $GOROOT ne doit pas être mis en place. Vous $GOPATH devrait être réglé sur $HOME/go en tapant export $GOPATH=$HOME/go

tapez export GOROOT="" pour corriger votre problème.

2
répondu julien bouteloup 2017-06-19 13:29:55

Just do export GOPATH="/whatever/you/like/your/GOPATH/to/be" .

1
répondu Volker 2013-12-17 08:44:29

si vous rencontrez ce problème après avoir configuré $GOPATH , c'est peut-être parce que vous l'exécutez avec un shell non supporté. J'utilisais fish et ça ne marchait pas, le lancer avec bash marchait très bien.

0
répondu Julien Fouilhé 2014-04-08 14:19:06

vous pouvez utiliser la solution" export " comme ce que d'autres gars ont suggéré. J'aimerais vous proposer une autre solution pour un confort permanent: vous pouvez utiliser n'importe quel chemin comme 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éballer:

$ cd /path/to/your/download/directory 
$ tar -xvf gost_linux_amd64.tar.gz

vous obtiendriez un exécutable gost . Vous pouvez le déplacer à /usr/local/bin pour une utilisation pratique:

$ sudo mv gost /usr/local/bin

exécutez la commande ci-dessous pour ajouter le chemin que vous voulez utiliser comme GOPATH dans le pathspace gost maintenir. Il est nécessaire de donner au chemin un nom que vous utiliserez plus tard.

$ gost add foo /home/foobar/bar     # 'foo' is the name and '/home/foobar/bar' is the path

lancer n'importe quelle commande Go que vous voulez dans le format:

gost goCommand [-p {pathName}] -- [goFlags...] [goArgs...]

par exemple, vous voulez exécuter go get github.com/go-sql-driver/mysql avec /home/foobar/bar comme le 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.

il vous aiderait à mettre le GOPATH et exécuter la commande. Mais rappelez-vous que vous avez ajouté le chemin dans gost 's pathspace . Si vous êtes sous n'importe quel niveau de sous-répertoires de /home/foobar/bar , vous pouvez même exécuter la commande ci-dessous qui ferait la même chose pour faire court:

$ gost get -- github.com/go-sql-driver/mysql

gost est un outil Simple de Go qui peut vous aider à gérer les GOPATHs et exécuter des commandes Go. Pour plus de détails sur la façon de l'utiliser pour exécuter d'autres commandes Go, vous pouvez simplement exécuter gost help goCmdName . Par exemple, vous voulez en savoir plus sur install , tapez juste les 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

0
répondu Franco 2017-11-28 09:00:41

exécuter 'go env' et voir où votre GOPATH est actuellement pointé vers. Si vous changez de répertoire, allez-y..la commande etc ' devrait fonctionner.

0
répondu Alexander Leon 2018-02-09 00:24:19

ce problème m'est arrivé à raspberry pi. Je me suis connecté via le client VNC Le problème persiste malgré la mise en place et l'exportation du GOPATH. Puis J'ai lancé la commande" go get " sans sudo et ça a fonctionné parfaitement.

0
répondu mtamboli 2018-05-20 10:09:21

j'ai dû lancer une application comme root (pour ouvrir un serveur web sur le port 80), cela a produit l'erreur pour moi, parce que l'utilisateur sudo a un environnement différent de l'utilisateur normal, donc GOPATH n'a pas été défini.

si quelqu'un d'autre a ce problème, ajoutez -E à la commande, cela préservera l'environnement de l'utilisateur.

sudo -E go run main.go

pour plus d'informations, voir la discussion ici: Google Groups – GOPATH Problème

-1
répondu Pwdr 2015-04-03 11:19:30