variable the org gopath golang descargar compilador macos installation go

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.



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.