为什么不能从 go get 导入库?
Why cannot import library from go get?
我使用
下载了 go-redis 客户端
go mod init github.com/my/repo
go get github.com/go-redis/redis/v8
但是显示cannot find package "go.opentelemetry.io/otel/api/trace"。所以我从 ${GOPATH}/src/github.com 中删除了 go-redis,然后再次尝试 运行
go get github.com/go-redis/redis/v8
但它什么也没做。不显示任何错误或任何消息。但是当我尝试导入包时它说
cannot find package "github.com/go-redis/redis/v8" in any of:
/usr/lib/go/src/github.com/go-redis/redis/v8 (from $GOROOT)
/home/username/go/src/github.com/go-redis/redis/v8 (from $GOPATH)
我尝试了 go mod tidy
go mod clean
但 none 成功了。我该怎么办?
- ls
$GOPATH
,如果没有显示你的golang库源路径,你应该先设置路径,
- 如果第 1 点可行,您应该只做:
go mod tidy
tidy 参数使您可以使用 sync 方法下载包,而无需单独执行 go get。
我宁愿使用 go vendoring,它会将你的依赖项添加到 vendor/ 并且 -mod=vendor 会告诉 golang 在本地搜索依赖项。
- 删除go.sum
- 类型
export GOFLAGS=-mod=vendor
- 类型
go mod tidy && go mod vendor
如果无法导出变量,请使用 go 运行 并使用前缀 GOFLAGS=-mod=vendor
进行构建,例如 GOFLAGS=-mod=vendor go run cmd/main/main.go
不要忘记将 vendor/ 添加到您的 .gitignore
我使用
下载了 go-redis 客户端go mod init github.com/my/repo
go get github.com/go-redis/redis/v8
但是显示cannot find package "go.opentelemetry.io/otel/api/trace"。所以我从 ${GOPATH}/src/github.com 中删除了 go-redis,然后再次尝试 运行
go get github.com/go-redis/redis/v8
但它什么也没做。不显示任何错误或任何消息。但是当我尝试导入包时它说
cannot find package "github.com/go-redis/redis/v8" in any of:
/usr/lib/go/src/github.com/go-redis/redis/v8 (from $GOROOT)
/home/username/go/src/github.com/go-redis/redis/v8 (from $GOPATH)
我尝试了 go mod tidy
go mod clean
但 none 成功了。我该怎么办?
- ls
$GOPATH
,如果没有显示你的golang库源路径,你应该先设置路径, - 如果第 1 点可行,您应该只做:
go mod tidy
tidy 参数使您可以使用 sync 方法下载包,而无需单独执行 go get。
我宁愿使用 go vendoring,它会将你的依赖项添加到 vendor/ 并且 -mod=vendor 会告诉 golang 在本地搜索依赖项。
- 删除go.sum
- 类型
export GOFLAGS=-mod=vendor
- 类型
go mod tidy && go mod vendor
如果无法导出变量,请使用 go 运行 并使用前缀 GOFLAGS=-mod=vendor
进行构建,例如 GOFLAGS=-mod=vendor go run cmd/main/main.go
不要忘记将 vendor/ 添加到您的 .gitignore