gopath golang example development build go package

golang - Go build: "No se puede encontrar el paquete"(aunque GOPATH esté configurado)



golang project structure (4)

¿Has intentado agregar el directorio absoluto de ir a tu ''ruta''?

export PATH=$PATH:/directory/to/go/

Aunque tengo GOPATH configurado correctamente, todavía no puedo obtener "ir a compilar" o "ejecutar" para encontrar mis propios paquetes. ¿Qué estoy haciendo mal? Muchas gracias!

$ echo $GOROOT /usr/local/go $ echo $GOPATH /home/mitchell/go $ cat ~/main.go package main import "foobar" func main() { } $ cat /home/mitchell/go/src/foobar.go package foobar $ go build main.go main.go:3:8: import "foobar": cannot find package


Editar: como querías decir GOPATH, mira la answer fasmat (votada)

Como se menciona en " ¿Cómo hago para buscar mi paquete? ", Debe colocar un paquete xxx en un directorio xxx .

Ver la especificación de idioma Go :

package math

Un conjunto de archivos que comparten el mismo PackageName forman la implementación de un paquete.
Una implementación puede requerir que todos los archivos fuente de un paquete habitan en el mismo directorio.

La organización del Código menciona:

Al crear un programa que importe el paquete " widget ", el comando go busca src/pkg/widget dentro de la raíz de Go, y luego, si el origen del paquete no se encuentra allí, busca src/widget dentro de cada espacio de trabajo en orden .

(un "espacio de trabajo" es una entrada de ruta en su GOPATH : esa variable puede hacer referencia a múltiples rutas para que su '' src, bin, pkg '' sea)

(Respuesta original)

También debe establecer GOPATH en ~ / go, no en GOROOT , como se ilustra en " Cómo escribir el código Go ".

La ruta de acceso se usa para resolver las declaraciones de importación. Es implementado y documentado en el paquete go / build.

La variable de entorno GOPATH enumera lugares para buscar el código Go.
En Unix, el valor es una cadena separada por dos puntos.
En Windows, el valor es una cadena separada por punto y coma.
En el Plan 9, el valor es una lista.

Eso es diferente de GOROOT :

Las distribuciones binarias de Go suponen que se instalarán en /usr/local/go (o c:/Go en Windows), pero es posible instalarlas en una ubicación diferente.
Si hace esto, necesitará establecer la variable de entorno GOROOT en ese directorio cuando use las herramientas Ir.


No funciona porque tu archivo fuente de foobar.go no está en un directorio llamado foobar . go build e go install intente hacer coincidir directorios, no archivos fuente.

  1. Establezca $GOPATH en un directorio válido, por ejemplo, export GOPATH="$HOME/go"
  2. Mueva foobar.go a $GOPATH/src/foobar/foobar.go y la construcción debería funcionar bien.

Pasos recomendados adicionales:

  1. Agregue $GOPATH/bin a su $PATH de: PATH="$GOPATH/bin:$PATH"
  2. Mueva main.go a una subcarpeta de $GOPATH/src , por ejemplo $GOPATH/src/test
  3. go install test ahora debería crear un ejecutable en $GOPATH/bin que se pueda $GOPATH/bin al escribir test en su terminal.

TL; DR: ¡ Sigue las convenciones de Go! (lección aprendida de la manera más difícil), verifique versiones anteriores de go y remove . Instale lo último

Para mí, la solución fue diferente. Trabajé en un servidor Linux compartido y después de verificar mi GOPATH y otras variables de entorno varias veces, todavía no funcionaba. Me encontré con varios errores, entre ellos ''No se puede encontrar el paquete'' y ''Ruta de importación no reconocida''. Después de intentar reinstalar con this solución siguiendo las instrucciones en golang.org (incluida la parte de remove ), aún se encontraron problemas.

Me tomó algo de tiempo darme cuenta de que todavía hay una versión anterior que no se ha desinstalado (corriendo la go version , which go luego vuelve ... DAHH), lo que me llevó a this pregunta y finalmente me resolvió.