gpt4 book ai didi

golang vendor 路径找不到包

转载 作者:数据小太阳 更新时间:2023-10-29 03:34:21 27 4
gpt4 key购买 nike

我正在构建来自 github.com/tarm/serial 的示例程序.

案例 1:如果将上述 repo check out 到 $GOPATH/src/github.com/tarm/serial 中,则构建正常。

情况 2:如果 repo 移动到 $GOPATH/src/vendor/github.com/tarm/serial 下,go build 命令会提示 cannot找到包“github.com/tarm/serial

案例 3:other SO answers建议放在./vendor下,这样包就在./vendor/github.com/tarm/serial。那也行不通。

go版本是1.10.4。我相信看到建议案例 2 或案例 3 的页面应该在过去的不同时间工作。有什么改变吗?您是否需要以某种方式启用 vendor 功能?

详细信息:

失败的命令

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 工具链希望您的项目 Root 于 GOPATH/src。如果 testdir 是您项目的根目录,则它需要位于 GOPATH/src/testdir,而不是 ~/testdir。然后,如果您将依赖项 check out 到 GOPATH/src/testdir/vendor 中,您将获得所需的行为。参见 Getting started .

关于golang vendor 路径找不到包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52432901/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com