no se puede cargar el paquete: paquete.: no hay archivos fuente de Go compilables


81

Aquí está el mensaje de error:

% go get     
can't load package: package .: no buildable Go source files in /Users/7yan00

% echo $GOPATH     
/Users/7yan00/Golang

¿Cómo solucionaría ese error?

Respuestas:


52

Asegúrese de estar usando ese comando en la carpeta de origen del proyecto Go (como /Users/7yan00/Golang/src/myProject ).

Una alternativa ( similar a este error) es usar la -dopción (ver go getcomando )

go get -d

La -dbandera le indica a get que se detenga después de descargar los paquetes; es decir, le indica a get que no instale los paquetes.

Vea si eso ayuda en su caso.


Pero de manera más general, como se describe en este hilo :

go get es para paquete (s), no para repositorios.

así que si quieres un paquete específico, por ejemplo, go.text/encodingusa

go get code.google.com/p/go.text/encoding

si desea todos los paquetes en ese repositorio, use ...para indicar que:

go get code.google.com/p/go.text/...

@ 7yan00 ¿en qué carpeta estaba cuando ejecutó ese comando? ¿Qué versión de go estás usando? ¿En qué sistema operativo? Por "no moverse", ¿quiere decir que el comando go get cuelga, parece congelado y nunca regresa?
VonC

2
Yo mismo sigo teniendo este problema. No puedo ver go getningún paquete remoto. Siempre lo consigo no buildable Go source files in .
retroceso

32

Debería consultar el $GOPATHdirectorio. Si hay un directorio vacío con el nombre del paquete, go getno descarga el paquete desde el repositorio.

Por ejemplo, si quiero obtener el github.com/googollee/go-socket.iopaquete de su repositorio de github, y ya hay un directorio vacío github.com/googollee/go-socket.ioen el $GOPATH, go get no descarga el paquete y luego se queja de que no hay un archivo fuente de Go compilable en el directorio. Primero elimine cualquier directorio vacío.


1
gracias, tuve que eliminar /usr/local/go/src/github.com/GIT_PROJECT_NAME
Baroudi Safwen

13

Otro posible motivo del mensaje:

no se puede cargar el paquete: ....: no hay archivos fuente de Go compilables

Es cuando los archivos fuente que se compilan tienen:

// +build ignore

En cuyo caso, los archivos se ignoran y no se pueden compilar según lo solicitado. Este comportamiento se documenta en https://golang.org/pkg/go/build/


1
Este fue mi caso: el proyecto usa etiquetas de compilación para incluir o excluir características de los archivos binarios que compilamos, y todos los archivos del paquete tenían la // +build myfeatureetiqueta. La solución fue agregar un archivo en el paquete llamado dummy.go que no contenía nada más que la declaración del paquete (es decir, package myfeature).
mmindenhall

1
gracias por la pista, en mi caso fue // +build !windows
mx1up

De manera similar, recientemente encontré un // +build go1.9que estaba causando este error cuando intentaba compilar con go1.8
jueves

1
Esta es una prueba más de que Go realmente necesita ser mucho más descriptivo y específico en sus mensajes de error. Actualmente, es muy poco propicio para un desarrollo rápido.
J. Scott Elblein

6

Para resolver esto en mi situación:

Tuve que especificar un subpaquete más específico para instalar.

Incorrecto:

go get github.com/garyburd/redigo

Correcto:

go get github.com/garyburd/redigo/redis

3

Si quiere todos los paquetes en ese repositorio, use ...para indicar eso, como:

go get code.google.com/p/go.text/...

0

Tenía este código de error exacto y después de verificar mi repositorio descubrí que no había archivos go, sino más directorios. Así que para mí fue más una pista falsa que un error.

Recomendaría hacer

ir env

y asegurándose de que todo esté como debería ser, verifique las variables de entorno en su sistema operativo y asegúrese de que su shell (bash o w / e) no lo comprometa a través de algo como un archivo .bash_profile o .bashrc. buena suerte.


0

puedes intentar descargar paquetes desde mod

go get -v all

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.