Go运行main.go调用非main包时报cannot find module for path如何处理
Go调用自定义包报错解决方案
报错原因
该报错是Go 1.11+版本默认启用Go modules依赖管理机制后,不再支持相对路径导入包导致的。
具体解决步骤
- 第一步:在main.go所在的项目根目录执行初始化模块命令,模块名可自定义,示例如下:
go mod init random - 第二步:修改main.go中的import语句,删除相对路径写法,替换为「模块名+子包路径」的形式:
修改前的导入写法:
import test "./tests"
修改后的导入写法:
import test "random/tests"
- 第三步:无需修改
./tests/test.go中的代码,直接执行运行命令即可正常输出结果:go run main.go
补充说明
如果你不想使用Go modules,也可以将整个项目放到$GOPATH/src目录下,导入时写相对于src目录的绝对路径即可。但目前Go官方已经推荐所有项目使用Go modules进行依赖管理,不需要额外配置GOPATH,使用更便捷。
内容的提问来源于stack exchange,提问作者Salvatore Timpani
相关产品推荐
相关产品推荐

