golang 供应商路径找不到包
golang vendor path cannot find package
我正在构建来自 github.com/tarm/serial
的示例程序。
案例 1:如果将上述 repo 检出到 $GOPATH/src/github.com/tarm/serial
,则构建正常。
情况 2:如果将回购移动到 $GOPATH/src/vendor/github.com/tarm/serial
下,go build
命令会抱怨 cannot find package "github.com/tarm/serial
。
案例三:建议放在./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
,构建将会成功。
Go 工具链希望您的项目植根于 GOPATH/src
。如果 testdir
是您项目的根,则它需要位于 GOPATH/src/testdir
,而不是 ~/testdir
。然后,如果您将依赖项检出到 GOPATH/src/testdir/vendor
,您将得到您正在寻找的行为。参见 Getting started。
我正在构建来自 github.com/tarm/serial
的示例程序。
案例 1:如果将上述 repo 检出到 $GOPATH/src/github.com/tarm/serial
,则构建正常。
情况 2:如果将回购移动到 $GOPATH/src/vendor/github.com/tarm/serial
下,go build
命令会抱怨 cannot find package "github.com/tarm/serial
。
案例三:./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
,构建将会成功。
Go 工具链希望您的项目植根于 GOPATH/src
。如果 testdir
是您项目的根,则它需要位于 GOPATH/src/testdir
,而不是 ~/testdir
。然后,如果您将依赖项检出到 GOPATH/src/testdir/vendor
,您将得到您正在寻找的行为。参见 Getting started。