Путь продавца Голанга не может найти пакет - PullRequest
0 голосов
/ 20 сентября 2018

Я создаю пример программы из 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, сборка будет успешной.

1 Ответ

0 голосов
/ 21 сентября 2018

Набор инструментов Go ожидает, что ваши проекты будут внедрены в GOPATH/src.Если testdir является корнем вашего проекта, он должен быть на GOPATH/src/testdir, а не на ~/testdir.Затем, если у вас проверены ваши зависимости в GOPATH/src/testdir/vendor, вы получите поведение, которое вы ищете.См. Начало работы .

...