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:
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 getdotyczy 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/...
go getżadnych zdalnych pakietów. Zawsze rozumiem no buildable Go source files in .
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.
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/
// +build myfeaturetag. Obejściem było dodanie do pakietu pliku o nazwie dummy.go, który zawierał tylko deklarację pakietu (tj package myfeature.).
// +build !windows
// +build go1.9który powodował ten błąd, gdy próbowałem budować za pomocą go1.8
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/...
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.