使用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。

回到顶部