Paket kann nicht geladen werden: Paket .: Keine erstellbaren Go-Quelldateien

80

Hier ist die Fehlermeldung:

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

% echo $GOPATH     
/Users/7yan00/Golang

Wie würden Sie diesen Fehler beheben?

7yan00
quelle

Antworten:

51

Stellen Sie sicher, dass Sie diesen Befehl im Quellordner des Go-Projekts verwenden (wie /Users/7yan00/Golang/src/myProject).

Eine Alternative ( ähnlich wie bei diesem Fehler) ist die Verwendung der -dOption (siehe go getBefehl ).

go get -d

Das -dFlag weist an, nach dem Herunterladen der Pakete anzuhalten. Das heißt, es weist get an, die Pakete nicht zu installieren.

Sehen Sie, ob das in Ihrem Fall hilft.


Aber allgemeiner, wie in diesem Thread beschrieben :

go get ist für Pakete, nicht für Repositorys.

Wenn Sie also beispielsweise ein bestimmtes Paket möchten go.text/encoding, verwenden Sie

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

Wenn Sie alle Pakete in diesem Repository haben möchten ..., geben Sie Folgendes an:

go get code.google.com/p/go.text/...
VonC
quelle
@ 7yan00 In welchem ​​Ordner waren Sie, als Sie diesen Befehl ausgeführt haben? Welche Version von go verwenden Sie? Auf welchem ​​Betriebssystem? Meinen Sie mit "nicht bewegen", dass der Befehl "go get" hängt, eingefroren zu sein scheint und niemals zurückkehrt?
VonC
2
Ich habe dieses Problem immer noch selbst. Ich kann go getkeine Remote-Pakete scheinen . Ich bekomme immer no buildable Go source files in .
Hourback
32

Sie sollten das $GOPATHVerzeichnis überprüfen . Wenn der Paketname leer ist, go getwird das Paket nicht aus dem Repository heruntergeladen.

Wenn ich beispielsweise das github.com/googollee/go-socket.ioPaket aus dem Github-Repository abrufen möchte und bereits ein leeres Verzeichnis github.com/googollee/go-socket.ioim Verzeichnis vorhanden ist $GOPATH, go get wird das Paket nicht heruntergeladen und es wird dann beschwert, dass das Verzeichnis keine erstellbare Go-Quelldatei enthält. Löschen Sie zunächst ein leeres Verzeichnis.

BurtK
quelle
1
danke, ich musste /usr/local/go/src/github.com/GIT_PROJECT_NAME
Baroudi Safwen
13

Ein weiterer möglicher Grund für die Nachricht:

Paket kann nicht geladen werden: ....: keine baubaren Go-Quelldateien

Ist, wenn die zu kompilierenden Quelldateien haben:

// +build ignore

In diesem Fall werden die Dateien ignoriert und können nicht wie gewünscht erstellt werden. Dieses Verhalten ist unter https://golang.org/pkg/go/build/ dokumentiert.

Joao Costa
quelle
1
Dies war bei mir der Fall - das Projekt verwendet Build-Tags, um Features in die von uns erstellten Binärdateien einzuschließen oder auszuschließen, und jede Datei im Paket hatte das // +build myfeatureTag. Die Problemumgehung bestand darin, dem Paket eine Datei mit dem Namen dummy.go hinzuzufügen, die nur die Paketdeklaration (dh package myfeature) enthielt .
mmindenhall
1
danke für den // +build !windows
hinweis
In ähnlicher Weise bin ich kürzlich auf eine gestoßen, // +build go1.9die diesen Fehler verursacht hat, als ich versucht habe, mit go1.8 zu bauen
am
1
Dies ist ein weiterer Beweis dafür, dass Go in seinen Fehlermeldungen wirklich viel aussagekräftiger und spezifischer sein muss. Derzeit ist es für eine schnelle Entwicklung nicht förderlich.
J. Scott Elblein
6

Um dies für meine Situation zu lösen:

Ich musste ein spezifischeres Unterpaket angeben, um es zu installieren.

Falsch:

go get github.com/garyburd/redigo

Richtig:

go get github.com/garyburd/redigo/redis
Donn Lee
quelle
3

Wenn Sie alle Pakete in diesem Repository haben möchten, verwenden Sie dies, ...um Folgendes zu kennzeichnen:

go get code.google.com/p/go.text/...
user3072851
quelle
0

Ich hatte genau diesen Fehlercode und stellte nach Überprüfung meines Repositorys fest, dass es keine go-Dateien gab, sondern nur mehr Verzeichnisse. Es war also eher ein roter Hering als ein Fehler für mich.

Ich würde es empfehlen

go env

und stellen Sie sicher, dass alles so ist, wie es sein sollte, überprüfen Sie Ihre Umgebungsvariablen in Ihrem Betriebssystem und stellen Sie sicher, dass Ihre Shell (bash oder w / e) es nicht über eine .bash_profile- oder .bashrc-Datei gefährdet. Viel Glück.

David Hunsicker
quelle
0

Sie können versuchen, Pakete von Mod herunterzuladen

go get -v all

STAHL
quelle