Я создаю пример программы из github.com/tarm/serial
.
Случай 1: Он строится нормально, если вышеприведенный репо выписан на $GOPATH/src/github.com/tarm/serial
.
Случай 2: Если репо перемещается под $GOPATH/src/vendor/github.com/tarm/serial
, команда go build
будет жаловаться cannot find package "github.com/tarm/serial
.
Случай 3: другие ответы SO предложили поместить его под ./vendor
, чтобы пакет находился на ./vendor/github.com/tarm/serial
.Это тоже не работает.
Версия go 1.10.4.Я считаю, что просмотр страниц, предлагающих вариант 2 или 3, должен был работать в разное время в прошлом.Что-то изменилось?Вам нужно как-то включить функцию вендора?
Сведения:
Неудачная команда
gotester:~/testdir$ go build uarttest_main.go
uarttest_main.go:5:9: cannot find package "github.com/tarm/serial" in any of:
/home/gotester/bin/go/src/github.com/tarm/serial (from $GOROOT)
/home/gotester/testdir/libs/src/github.com/tarm/serial (from $GOPATH)
Исходный код ./
:
gotester:~/testdir$ cat uarttest_main.go
package main
import (
"log"
"github.com/tarm/serial"
)
func main() {
c := &serial.Config{Name: "COM45", Baud: 115200}
s, err := serial.OpenPort(c)
if err != nil {
log.Fatal(err)
}
n, err := s.Write([]byte("test"))
if err != nil {
log.Fatal(err)
}
buf := make([]byte, 128)
n, err = s.Read(buf)
if err != nil {
log.Fatal(err)
}
log.Printf("%q", buf[:n])
}
./vendor
каталог:
gotester:~/testdir$ tree --charset=ascii ./vendor
./vendor
`-- github.com
`-- tarm
`-- serial
|-- basic_test.go
|-- LICENSE
|-- README.md
|-- serial.go
|-- serial_linux.go
|-- serial_posix.go
`-- serial_windows.go
3 directories, 7 files
Если выполнить эту команду сейчас: mv ./vendor/github.com ./libs/src
, сборка будет успешной.