nie można załadować pakietu: pakiet.: brak plików źródłowych Go do zbudowania


81

Oto komunikat o błędzie:

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

% echo $GOPATH     
/Users/7yan00/Golang

Jak możesz rozwiązać ten błąd?

Odpowiedzi:


52

Upewnij się, że używasz tego polecenia w folderze źródłowym projektu Go (na przykład /Users/7yan00/Golang/src/myProject).

Jedną alternatywą ( podobną do tego błędu) jest użycie -dopcji (zobacz go getpolecenie )

go get -d

W -dprzesyła zlecenie flag dostać się do przystanku po pobraniu pakietów; to znaczy instruuje get, aby nie instalował pakietów.

Sprawdź, czy to pomoże w Twoim przypadku.


Ale bardziej ogólnie, jak opisano w tym wątku :

go get dotyczy pakietów, a nie repozytoriów.

więc jeśli chcesz mieć konkretny pakiet, powiedzmy, go.text/encodingużyj

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

jeśli chcesz wszystkie pakiety w tym repozytorium, użyj, ...aby zaznaczyć, że:

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

@ 7yan00, w którym folderze byłeś, uruchamiając to polecenie? Jakiej wersji go używasz? Na jakim systemie operacyjnym? Mówiąc „nie porusza się”, masz na myśli, że polecenie go get zawiesza się, wydaje się zawieszone i nigdy nie wraca?
VonC,

2
Sam nadal mam ten problem. Nie mogę wyświetlić go getżadnych zdalnych pakietów. Zawsze rozumiem no buildable Go source files in .
godzina powrotu

32

Powinieneś sprawdzić $GOPATHkatalog. Jeśli istnieje pusty katalog nazwy pakietu, go getnie pobiera pakietu z repozytorium.

Na przykład, jeśli chcę pobrać github.com/googollee/go-socket.iopakiet z jego repozytorium github, a github.com/googollee/go-socket.iow katalogu jest już pusty katalog $GOPATH, go get nie pobiera pakietu, a następnie narzeka, że ​​w katalogu nie ma pliku źródłowego Go do zbudowania. Najpierw usuń pusty katalog.


1
dzięki, musiałem usunąć /usr/local/go/src/github.com/GIT_PROJECT_NAME
Baroudi Safwen

13

Inny możliwy powód wiadomości:

nie można załadować pakietu: ....: brak plików źródłowych Go do zbudowania

Występuje, gdy kompilowane pliki źródłowe mają:

// +build ignore

W takim przypadku pliki są ignorowane i nie można ich zbudować zgodnie z żądaniem.To zachowanie jest udokumentowane na https://golang.org/pkg/go/build/


1
Tak było w przypadku mnie - projekt używa tagów kompilacji do włączania lub wykluczania funkcji z tworzonych przez nas plików binarnych, a każdy plik w pakiecie miał // +build myfeaturetag. Obejściem było dodanie do pakietu pliku o nazwie dummy.go, który zawierał tylko deklarację pakietu (tj package myfeature.).
mmindenhall

1
dzięki za podpowiedź, w moim przypadku było to // +build !windows
mx1up

Podobnie, ostatnio napotkałem błąd, // +build go1.9który powodował ten błąd, gdy próbowałem budować za pomocą go1.8
thurt

1
To kolejny dowód na to, że Go naprawdę musi być znacznie bardziej opisowe i szczegółowe w swoich komunikatach o błędach. Obecnie bardzo nie sprzyja szybkiemu rozwojowi.
J. Scott Elblein

6

Aby rozwiązać ten problem w mojej sytuacji:

Musiałem określić bardziej szczegółowy pakiet podrzędny do zainstalowania.

Źle:

go get github.com/garyburd/redigo

Poprawny:

go get github.com/garyburd/redigo/redis

3

Jeśli chcesz, aby wszystkie pakiety znajdowały się w tym repozytorium, użyj, ...aby oznaczyć to, na przykład:

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

0

Miałem dokładnie ten kod błędu i po sprawdzeniu mojego repozytorium odkryłem, że nie ma plików go, a właściwie tylko więcej katalogów. Więc to był dla mnie bardziej czerwony śledź niż błąd.

Poleciłbym to zrobić

go env

i upewniając się, że wszystko jest tak, jak powinno, sprawdź swoje zmienne środowiskowe w swoim systemie operacyjnym i upewnij się, że Twoja powłoka (bash lub w / e) nie naraża jej na niebezpieczeństwo poprzez coś takiego jak plik .bash_profile lub .bashrc. powodzenia.


0

możesz spróbować pobrać pakiety z mod

go get -v all

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.