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?
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 rozumiemno 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, agithub.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.źródło
Inny możliwy powód wiadomości:
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/
źródło
// +build myfeature
tag. Obejściem było dodanie do pakietu pliku o nazwie dummy.go, który zawierał tylko deklarację pakietu (tjpackage myfeature
.).// +build !windows
// +build go1.9
który powodował ten błąd, gdy próbowałem budować za pomocą go1.8Aby 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
źródło
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/...
źródło
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ć
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.
źródło
możesz spróbować pobrać pakiety z mod
go get -v all
źródło