mit protobuf Version 2.6.1 (die ich über Homebrew installiert habe)
Ich versuche zu rennen
$ protoc --go_out=../cloud/ *.proto
Ich erhalte diesen Fehler immer wieder.
$ protoc-gen-go: program not found or is not executable
$ --go_out: protoc-gen-go: Plugin failed with status code 1.
Ich habe das Protoc-Gen-Go in meinem Go-Pfad installiert. Hat sonst noch jemand dieses Problem?
protoc-gen-go
muss sich in Ihrem Shell -Pfad befinden, d. h. eines der Verzeichnisse, die in der Umgebungsvariablen PATH
aufgeführt sind. Dies unterscheidet sich vom Go-Pfad. Sie können dies testen, indem Sie einfach protoc-gen-go
in die Befehlszeile eingeben: Wenn der Befehl "Befehl nicht gefunden" (oder ähnliches) lautet, steht er nicht in Ihrer PATH
.
Verwenden
$ go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
ist sicherer als mit
$ Sudo apt-get install golang-goprotobuf-dev
Weil der neueste protoc-gen-go
die lib github.com/golang/protobuf/proto
verwendet, aber protoc-gen-go
in apt-get
die lib code.google.com/p/goprotobuf/proto
verwendet, die jetzt nicht vorhanden ist.
Auf Ubuntu 18.04 wird dies überprüft, um dieses Problem zu lösen:
Sudo apt-get install golang-goprotobuf-dev
Sie sollten Ihren GO_PATH
genau definieren, wo Ihre Go-Pakete Live ..__ sind. Mit anderen Worten, GO_PATH
ist Ihr Go-Workspace. Der GO_PATH
Sollte ~/go
sein.
protoc-gen-go
sollte in Ihrer PATH
enthalten sein. Während protoc-gen-go
nach der Installation in $GO_PATH/bin
lebt.
Fügen Sie diese 2 wichtigen Zeilen Ihrem ~/.bash_profile
hinzu:
export GO_PATH=~/go
export PATH=$PATH:/$GO_PATH/bin
Dann müssen Sie eine neue Shell-Sitzung starten oder einfach folgende Zeile eingeben:
$ source ~/.bash_profile
Wie habe ich gelöst:
$GOPATH/bin
zu PATH hinzu, indem Sie export PATH=$PATH:$GOPATH/bin
ausführen.export GOPATH=$(go env GOPATH)
oberhalb der export PATH=$PATH:$GOPATH/bin
-Zeile in der .bash_profile
-Datei hinzu.go get -u
erneut für die erforderlichen Pakete aus.protoc --go_out=../cloud/ *.proto
aus.Ich traf das gleiche Problem.
$ protoc --go_out=plugins=grpc:pb/ *.proto
protoc-gen-go: program not found or is not executable
--go_out: protoc-gen-go: Plugin failed with status code 1.
Die lösung wie folgt:
Suchen Sie das Installationsverzeichnis von protoc-gen-go
, es muss sich in Ihrem $PATH
befinden.
export PATH=$PATH:/path/to/dir
Sie sollten es besser zu Ihrem .bash_profile
hinzufügen
echo $"export PATH=\$PATH:$(/path/to/dir)" >> ~/.bash_profile
source ~/.bash_profile
dann ist alles ok.
Ich habe Ubuntu 18.04.02 LTS und protoc
mit installiert
Sudo apt install protobuf-compiler
Ich habe meinen GOPATH und GOBIN richtig eingestellt, aber als ich einen protoc --go_out=. <filename>
Machte, bekam ich immer noch
protoc-gen-go: program not found or is not executable
--go_out: protoc-gen-go: Plugin failed with status code 1.
Nachdem ich ein paar Orte gelesen hatte, konnte ich feststellen, dass dies der Fall war
go get -u github.com/golang/protobuf/protoc-gen-go
konnte das Problem beheben. Hoffe das hilft jemandem da draußen.
Stellen Sie sicher, dass der Pfad zu proton-gen-go
in Ihrer Variable PATH
absolut ist (d. H. /Users/me/go/bin
anstelle von ~/go/bin
).
Anscheinend kann protoc
nicht wissen, wie ~
erweitert werden soll.
Mby wird für jemanden helfen. Ich bin auf Fedora 29.
Als ich Go installiert habe, habe ich:
echo 'export GOPATH=$HOME/Go' >> $HOME/.bashrc
source $HOME/.bashrc
Also habe ich meinen GOPATH eingerichtet. Als nächstes mache ich:
echo 'export PATH=$PATH:$GOPATH/bin' >> $HOME/.bashrc
source $HOME/.bashrc
Und meine protoc
-Compiler-Arbeit ist ein Charme.