使用go get拉取自定义GitHub模块包时提示包不存在的问题
问题分析与解决
核心问题是包的导入路径与实际目录结构不匹配:
你的greetings.go直接放在模块根目录下,而模块路径是github.com/nonfungible-human/mod-test,因此该包的正确导入路径就是模块本身的路径,而非github.com/nonfungible-human/mod-test/greetings。你错误地将包名追加到模块路径后,导致Go无法找到对应包。
解决方法二选一:
方法一:修正导入语句(无需调整仓库结构)
- 修改示例程序的import语句,将
github.com/nonfungible-human/mod-test/greetings替换为github.com/nonfungible-human/mod-test:
import ( "fmt" "log" "github.com/nonfungible-human/mod-test" )
- 代码中仍可通过
greetings.XXX调用包内方法(因为greetings.go声明的包名是greetings)。 - 执行以下命令更新依赖并构建:
go get github.com/nonfungible-human/mod-test@v0.0.0 go build
方法二:调整仓库目录结构(符合常规包布局)
如果希望保持github.com/nonfungible-human/mod-test/greetings的导入路径,需调整仓库结构:
- 在仓库根目录创建
greetings子目录,将greetings.go移入该目录。 - 重新提交代码并打新标签(如
v0.0.1,因为模块内容已变更,旧标签无法覆盖)。 - 在示例程序中保持原导入语句,执行以下命令拉取新版本依赖并构建:
go get github.com/nonfungible-human/mod-test/greetings@v0.0.1 go build
验证步骤
执行以下命令可查看模块包含的包,确认路径正确性:
go list github.com/nonfungible-human/mod-test@v0.0.0/...
内容的提问来源于stack exchange,提问作者Zephyrus
相关产品推荐
相关产品推荐

