Golang运行报错找不到包:package xxx is not in GOROOT的解决过程
作者:尚墨1111 发布时间:2024-05-05 09:32:25
1 区分几个路径
GOROOT
:Golang的安装路径,安装之后就默认自带了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
来源:https://blog.csdn.net/qq_42647903/article/details/123253707


猜你喜欢
- 方法一一、桌面右击,点击“Git Bash Here”二、在弹出的黑窗口,右击,选择&ldq
- 本文实例讲述了Python3通过Luhn算法快速验证信用卡卡号的方法。分享给大家供大家参考。具体分析如下:Python3通过Luhn算法快速
- 一、官方文档介绍官网nn.Conv2d:对由多个输入平面组成的输入信号进行二维卷积二、torch.nn.Conv2d()函数详解参数详解to
- 这次,我们用Turtle模块结合三角函数,绘制出这样的勾股树:首先,导入模块from turtle import *from math im
- 数据结构typedef struct { PyObject_VAR_HEAD Py_ha
- 一. 什么是装饰器知乎某大佬如是说:内裤可以用来遮羞,但是到了冬天它没法为我们防风御寒,聪明的人们发明了长裤,有了长裤后宝宝再也不冷了,装饰
- 本文实例分析了Go语言中普通函数与方法的区别。分享给大家供大家参考。具体分析如下:1.对于普通函数,接收者为值类型时,不能将指针类型的数据直
- 前言主要介绍OpenCV中的分水岭算法、图像金字塔对图像进行分割的方法。一、使用分水岭算法分割图像分水岭算法的基本原理为:将任意的灰度图像视
- 常规循环引用内存泄漏和Closure内存泄漏 要了解javascript的内存泄漏问题,首先要了解的就是javascript的GC原理。我记
- 本文实例为大家分享了微信小程序上传视频,供大家参考,具体内容如下微信开发者工具需要安装ffmpeg环境才能正常使用下面的官方方法。1、调用官
- 我们开发项目常常将项目上传到linux远程服务器上来运行,查看日志等等,每次连接终端输入命令上传文件总是很烦,最近正好在学go开发项目,用到
- 在win7 64位,Anaconda安装的Python3.6.1下安装的TensorFlow与Keras,Keras的backend为Ten
- java后台相关问题一,程序包lombok不存在通常报这个错误,是因为,我们的开发者工具idea没有安装lombok库导致的解决办法如下:提
- 前言:最近在学习单片机,老师要求自己写串口通信的上位机程序,我采用比较简单的pyqt5+serial模块来完成任务,pycharm测试一切正
- mysql升级5.7版本以后,安全性大幅度上升。但是呢。。。带复杂的记不住。额额。。本来脑子就不好使,还记那么复杂,尤其是本地就更没必要,还
- 安装requests库之前我们需要先看一下电脑上有没有pip,可以在cmd中输入pip list查看,若出现以下内容则电脑已安装pip,否则
- switch语句可以让一个变量对反对值的列表平等进行测试。每个值被称为一个的情况(case),变量被接通检查每个开关盒(switch cas
- 这次做一个比较贴近我实际的东西:python分析作业提交情况。要求: 将服务器中交作业的学生(
- 1 配置 Python3 环境单击 工具 > 编译系统 > 新建编译系统...弹出:替换里面的内容为:{ &nbs
- 制作这个播放器的目的是为了将下载下来的mp3文件进行随机或是顺序的播放。选择需要播放的音乐的路径,选择播放方式,经过测试可以完美的播放本地音