iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >Golang运行报错找不到包:package xxx is not in GOROOT的解决过程
  • 220
分享到

Golang运行报错找不到包:package xxx is not in GOROOT的解决过程

2024-04-02 19:04:59 220人浏览 独家记忆
摘要

目录1 区分几个路径2 Go111MODULE3 解决方案方案一:关闭 go mod 模式方案二:使用go mod 模式总结1 区分几个路径 GOROOT:golang的安装路径,安

1 区分几个路径

  • GOROOTgolang的安装路径,安装之后就默认自带了
  • GOPATH:Golang的工作目录

go_project // (go_project为 GOPATH目录)
– bin // golang编译可执行文件存放路径
– pkg // golang编译包时,生成的.a文件存放路径
– src // 源码路径。按照golang默认约定,go run,go install等命令的当前工作路径

出错:

导包运行时出错:package util is not in GOROOT (D:\MyApp\golang\src\util)只搜索GOROOT环境,而不搜索GOPATH路径

分析:

包管理的问题,import 包,会对应的出现包管理的问题,使用GOPATH问题

  • 代码开发必须在go path src目录下,不然,就有问题。
  • 依赖手动管理
  • 依赖包没有版本可言

应对包管理:go mod——GO111MODULE,go modules 是 golang 1.11 新加的特性。

模块是相关Go包的集合。modules是源代码交换和版本控制的单元。 go命令直接支持使用modules,包括记录和解析对其他模块的依赖性。modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件。

2 GO111MODULE

GO111MODULE 有三个值:off, on和auto(默认值

  • GO111MODULE=off,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。
  • GO111MODULE=on,go命令行会使用modules,而一点也不会去GOPATH目录下查找。依赖包的存放位置变更为$GOPATH/pkg,允许同一个package多个版本并存,且多个项目可以共享缓存的 module
  • GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:

当前目录在GOPATH/src之外且该目录包含go.mod文件

当前文件在包含go.mod文件的目录下面。

参看文章:go mod使用

3 解决方案

命令行使用go env 查看环境,明显GO11MODULE没有设定

方案一:关闭 go mod 模式

用 gopath 模式引入包从src目录下开始引入,需要

go env -w GO111MODULE=off

方案二:使用go mod 模式

go env -w GO111MODULE=on

并且在目录下执行 go mod init

目录下产生两个文件

go.mod
go.sum

否则就会报错找不到包

参考:package ‘xxx’ is not in GOROOT

总结

到此这篇关于Golang运行报错找不到包:package xxx is not in GOROOT解决的文章就介绍到这了,更多相关Golang运行报错找不到包内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: Golang运行报错找不到包:package xxx is not in GOROOT的解决过程

本文链接: https://www.lsjlt.com/news/120946.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作