macos - the - gopath variable
no se puede descargar, $ GOPATH no configurado (13)
Quiero instalar json2csv usando go get github.com/jehiah/json2csv
pero recibo este error:
package github.com/jehiah/json2csv: cannot download, $GOPATH not set. For more details see: go help go path
¿Alguna ayuda sobre cómo solucionar esto en MacOS?
Mira un video
En general, siempre recomiendo este video oficial de Go para obtener una visión general rápida sobre el asunto:
http://www.youtube.com/watch?v=XCsL89YtqCs
Es más fácil ser mostrado que ser dicho.
jwfearn parafraseó la parte importante del video:
export GOPATH="${HOME}/gocode"; export PATH="${PATH}:${GOPATH}/bin"; mkdir -p "${GOPATH}"
Usando cerveza
Lo instalé usando brew
.
$ brew install go
Cuando lo haya hecho si ejecuta este comando brew, mostrará la siguiente información:
$ 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
Las piezas importantes son estas líneas:
/usr/local/Cellar/go/1.4.2 (4676 archivos, 158M) *
PATH de exportación = $ PATH: / usr / local / opt / go / libexec / bin
Configurando el entorno de GO
Eso muestra dónde se instaló GO. Necesitamos hacer lo siguiente para configurar el entorno de GO:
$ export PATH=$PATH:/usr/local/opt/go/libexec/bin
$ export GOPATH=/usr/local/opt/go/bin
Luego puede verificar usando GO para ver si está configurado correctamente:
$ 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"
Configurando json2csv
Se ve bien, así que vamos a instalar json2csv
:
$ go get github.com/jehiah/json2csv
$
¿Lo que acaba de suceder? Lo instaló. Puedes verificar de esta manera:
$ $ ls -l $GOPATH/bin
total 5248
-rwxr-xr-x 1 sammingolelli staff 2686320 Jun 9 12:28 json2csv
OK, ¿por qué no puedo escribir json2csv
en mi shell? Eso es porque el directorio /bin
bajo $GOPATH
no está en su $PATH
.
$ type -f json2csv
-bash: type: json2csv: not found
Así que vamos a agregarlo temporalmente:
$ export PATH=$GOPATH/bin:$PATH
Y vuelva a verificar:
$ type -f json2csv
json2csv is hashed (/usr/local/opt/go/bin/bin/json2csv)
Ahora está ahí:
$ 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
Agregue las modificaciones que hemos hecho a $PATH
y $GOPATH
a su $HOME/.bash_profile
para que persistan entre reinicios.
Ejecute ''go env'' y vea hacia dónde apunta su GOPATH. Si cambias a ese directorio, tu comando ''go get..etc'' debería funcionar.
Este trabajó
Configuración del entorno de desarrollo Go en Ubuntu y cómo solucionar $ GOPATH / $ GOROOT
Pasos
mkdir ~/go
Establecer $ GOPATH en .bashrc,
export GOPATH=~/go
export PATH=$PATH:$GOPATH/bin
Me pareció más fácil hacerlo así:
export GOROOT=$HOME/go
export GOPATH=$GOROOT/bin
export PATH=$PATH:$GOPATH
Para MAC esto funcionó bien para mí.
sudo nano /etc/bashrc
y agregue lo siguiente al final del archivo
export PATH=$PATH:/usr/local/opt/go/libexec/bin
export GOPATH=/usr/local/opt/go/bin
Esto debería solucionar el problema. Intente abrir una nueva terminal y echo $ GOPATH, debería ver el valor correcto.
Puede usar la solución de "exportación" tal como lo sugirieron otros tipos. Me gustaría ofrecerle otra solución para su comodidad permanente: puede usar cualquier ruta como GOPATH cuando ejecuta los comandos de Go.
En primer lugar, debe descargar una pequeña herramienta llamada gost
: https://github.com/byte16/gost/releases . Si usa ubuntu, puede descargar la versión de Linux ( https://github.com/byte16/gost/releases/download/v0.1.0/gost_linux_amd64.tar.gz ).
Luego debe ejecutar los siguientes comandos para descomprimirlo:
$ cd /path/to/your/download/directory
$ tar -xvf gost_linux_amd64.tar.gz
Tendrás un gost
ejecutable. Puede moverlo a /usr/local/bin
para un uso conveniente:
$ sudo mv gost /usr/local/bin
Ejecute el siguiente comando para agregar la ruta que desea usar como GOPATH en el espacio de gost
mantiene. Se requiere dar un nombre a la ruta que usarías más tarde.
$ gost add foo /home/foobar/bar # ''foo'' is the name and ''/home/foobar/bar'' is the path
Ejecute cualquier comando Go que desee en el formato:
gost goCommand [-p {pathName}] -- [goFlags...] [goArgs...]
Por ejemplo, si desea ejecutar go get github.com/go-sql-driver/mysql
con /home/foobar/bar
como GOPATH, solo hazlo de la siguiente manera:
$ gost get -p foo -- github.com/go-sql-driver/mysql # ''foo'' is the name you give to the path above.
Te ayudaría a configurar GOPATH y ejecutar el comando. Pero recuerde que ha agregado la ruta al gost
ruta de Gost . Si se encuentra bajo cualquier nivel de subdirectorios de /home/foobar/bar
, incluso puede ejecutar el siguiente comando que haría lo mismo para abreviar:
$ gost get -- github.com/go-sql-driver/mysql
gost
es una Herramienta simple de Go que puede ayudarte a administrar GOPATH y ejecutar comandos de Go. Para obtener más detalles sobre cómo usarlo para ejecutar otros comandos de Go, simplemente puede ejecutar la gost help goCmdName
. Por ejemplo, si desea saber más sobre la install
, simplemente escriba las palabras a continuación en:
$ gost help install
También puede encontrar más detalles en el archivo README del proyecto: https://github.com/byte16/gost/blob/master/README.md
Si se encuentra con este problema después $GOPATH
, puede ser porque lo está ejecutando con un shell no compatible. Estaba usando fish
y no funcionó, lanzarlo con bash
funcionó bien.
Solo export GOPATH="/whatever/you/like/your/GOPATH/to/be"
.
Tu $GOROOT
no debería estar configurado. Usted $GOPATH
debe establecerse en $HOME/go
escribiendo export $GOPATH=$HOME/go
export GOROOT=""
para solucionar tu problema.
Tuve que ejecutar una aplicación como root (para abrir un servidor web en el puerto 80), esto produjo el error para mí, porque el usuario sudo tiene un entorno diferente al del usuario normal, por lo tanto, no se configuró GOPATH.
Si alguien más tiene este problema, agregue -E
al comando, esto preservará el entorno del usuario.
sudo -E go run main.go
Para obtener más información, consulte la discusión aquí: Grupos de Google - Problema GOPATH
[Actualización: a partir de Go 1.8, GOPATH
predeterminada en $HOME/go
, pero aún puede resultarle útil si desea comprender el diseño de GOPATH
, personalizarlo, etc.]
El sitio oficial de Go explica GOPATH y cómo diseñar un directorio de espacio de trabajo .
export GOPATH="$HOME/your-workspace-dir/"
- ejecútelo en su shell, luego agréguelo a ~/.bashrc
o equivalente para que se configure para usted en el futuro. Go instalará paquetes bajo src/
, bin/
, y pkg/
, subdirectorios allí. Deberá poner sus propios paquetes en algún lugar bajo $GOPATH/src
, como $GOPATH/src/github.com/myusername/
si desea publicar en GitHub. Probablemente también desee export PATH=$PATH:$GOPATH/bin
en su .bashrc
para que pueda ejecutar programas compilados bajo $GOPATH
.
Opcionalmente, a través de Rob Pike , también puede configurar CDPATH
por lo que es más rápido realizar un cd
para empaquetar export CDPATH=.:$GOPATH/src/github.com:$GOPATH/src/golang.org/x
en bash: export CDPATH=.:$GOPATH/src/github.com:$GOPATH/src/golang.org/x
significa que puede escriba cd net/html
lugar de cd $GOPATH/src/golang.org/x/net/html
.
Keith Rarick notes que puede establecer GOPATH=$HOME
para colocar los directorios src/
, pkg/
y bin/
Go justo debajo de su homeedir. Eso puede ser bueno (por ejemplo, es posible que ya tenga $HOME/bin
en su ruta) pero, por supuesto, algunas personas usan múltiples espacios de trabajo, etc.
(para Mac)
Intenté todas estas respuestas y, por alguna razón aún desconocida, ninguna de ellas funcionó.
Tuve que "forzar la alimentación" de GOPATH configurando la variable de entorno por cada comando que lo requería. Por ejemplo:
sudo env GOPATH=$HOME/goWorkDirectory go build ...
Incluso el glide
me estaba dando el error GOPATH not set
. Lo resolvió, de nuevo, por "alimentación forzada": Intenté todas estas respuestas y, por alguna razón aún desconocida, ninguna de ellas funcionó.
Tuve que "forzar la alimentación" de GOPATH configurando la variable de entorno por cada comando que lo requería.
sudo env GOPATH=$HOME/goWorkDirectory glide install
Espero que esto ayude a alguien.