使用Golang模块时遇到的问题
使用Golang模块时遇到的问题
pavan@localhost:~/Pavan/gowork/src$ go run streamer.go
streamer.go:5:5: package oci-go-sdk/v42/common is not in GOROOT (/usr/local/go/src/oci-go-sdk/v42/common)
pavan@localhost:~/Pavan/gowork/src$ echo $GOROOT
/usr/local/go
pavan@localhost:~/Pavan/gowork/src$ cat …/go.mod
module ociwork_com/gowork
go 1.16
require github.com/oracle/oci-go-sdk/v42 v42.0.0 // indirect
pavan@localhost:~/Pavan/gowork/src$
pavan@localhost:~/Pavan/gowork/src$ echo $GOPATH
/home/pavan/go
我无法使用go模块。SDK是通过以下命令下载的:
go get github.com/oracle/oci-go-sdk/v42
我看到它被下载到了GOPATH目录中。 我该如何让它正常工作?
更多关于使用Golang模块时遇到的问题的实战教程也可以访问 https://www.itying.com/category-94-b0.html
2 回复
尝试在包含 go.mod 的项目中运行 go mod tidy。有时效果显著。
更多关于使用Golang模块时遇到的问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
这个错误表明你的项目使用了Go模块,但编译器仍在GOROOT和GOPATH中查找依赖包。你需要确保在项目根目录下正确初始化Go模块并启用模块模式。
首先,在你的项目根目录中初始化Go模块(如果还没做的话):
cd ~/Pavan/gowork
go mod init ociwork_com/gowork
然后,确保你启用了Go模块支持。设置环境变量:
export GO111MODULE=on
或者,如果你想要永久启用,可以添加到你的shell配置文件中:
echo 'export GO111MODULE=on' >> ~/.bashrc
source ~/.bashrc
现在,下载依赖并运行程序:
cd src
go mod tidy
go run streamer.go
go mod tidy命令会自动下载go.mod中声明的依赖包到模块缓存中,并更新go.sum文件。
如果你需要手动添加依赖,可以使用:
go get github.com/oracle/oci-go-sdk/v42
检查你的项目结构应该是这样的:
~/Pavan/gowork/
├── go.mod
├── go.sum
└── src/
└── streamer.go
确保在项目根目录(包含go.mod的目录)或子目录中运行Go命令。模块系统会自动处理依赖关系,不再依赖GOPATH。

