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 -d
opcji (zobacz go get
polecenie )
go get -d
W
-d
przesył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/encoding
uż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ć $GOPATH
katalog. Jeśli istnieje pusty katalog nazwy pakietu, go get
nie pobiera pakietu z repozytorium.
Na przykład, jeśli chcę pobrać github.com/googollee/go-socket.io
pakiet z jego repozytorium github, a github.com/googollee/go-socket.io
w 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 myfeature
tag. 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.9
któ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.