You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go语言自定义包导入报错求助:package greet不在GOROOT中如何解决?

解决Go包导入错误:package greet is not in GOROOT

错误原因

你的greet包位于GOPATH的src目录下,但Go无法在GOPATH路径中定位到它——要么是GOPATH配置未生效,要么是当前启用了Go Modules模式却未正确配置模块依赖。

解决方案

方案1:使用GOPATH传统模式

  1. 确认GOPATH配置
    执行命令查看当前生效的GOPATH:

    go env GOPATH
    

    确保你的greet包所在的go/src目录完全匹配该路径(比如GOPATH输出/home/xxx/go,则包路径应为/home/xxx/go/src/greet)。

  2. 正确运行代码
    不要单独在app目录下执行go run entry.go,需回到GOPATH的src目录运行,或指定完整路径:

    # 方式1:进入GOPATH/src目录后运行
    cd $GOPATH/src
    go run app/entry.go
    
    # 方式2:直接指定完整文件路径
    go run $GOPATH/src/app/entry.go
    

    也可先将greet包安装到GOPATH的pkg目录,再运行代码:

    go install greet
    go run entry.go
    

方案2:使用Go Modules(Go 1.11+ 推荐方式)

  1. 初始化模块
    进入app目录($GOPATH/src/app),执行:

    go mod init app
    

    生成go.mod文件管理依赖。

  2. 配置本地包导入
    方式一:使用相对路径修改entry.go的导入语句:

    import (
        "fmt"
        "../greet" // 从app目录向上一级定位greet包
    )
    

    方式二:规范模块依赖管理:

    • 进入greet目录执行go mod init greet,初始化模块
    • 回到app目录执行以下命令绑定本地依赖:
      go mod edit -replace greet=../greet
      go get greet
      

    之后即可正常运行go run entry.go。

验证结果

无论采用哪种方案,运行代码后应输出:

heyGood morning

内容的提问来源于stack exchange,提问作者jaenmo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 12:01:21