当前位置:   article > 正文

go引入自建包名报错 package XXX is not in std_package is not in std

package is not in std

在写一个测试引入包名的测试案列中出现了下面的错误

  1. D:\goworkspace\src\go_code\project_01\main>go run main.go
  2. main.go:5:2: package go_code/project_01/calutils is not in std (G:\go_env\src\go_code\project_01\calutils)
  3. main.go:6:2: package go_code/project_01/dbutils is not in std (G:\go_env\src\go_code\project_01\dbutils)

这个错误消息表明Go代码尝试导入一个位于项目目录之外的包,并且Go无法找到这个包。首先看了我的包名对应的路径是没有问题的。 

 排除了路径错误原因,接下来检查配置环境变量

 环境变量GOPATH的值即项目路径下的根目录,下面对应的是我的项目路径

当我配置好了以后再次运行还是报上面的错误。这时候就要查看go的环境变量了,输入下面命令进行查看

  1. D:\goworkspace\src\go_code\project_01\main>go env
  2. set GO111MODULE=
  3. set GOARCH=amd64
  4. set GOBIN=
  5. set GOCACHE=C:\Users\wxq\AppData\Local\go-build
  6. set GOENV=C:\Users\wxq\AppData\Roaming\go\env
  7. set GOEXE=.exe
  8. set GOEXPERIMENT=
  9. set GOFLAGS=
  10. set GOHOSTARCH=amd64
  11. set GOHOSTOS=windows
  12. set GOINSECURE=
  13. set GOMODCACHE=D:\goworkspace\pkg\mod
  14. set GONOPROXY=
  15. set GONOSUMDB=
  16. set GOOS=windows
  17. set GOPATH=D:\goworkspace
  18. set GOPRIVATE=
  19. set GOPROXY=https://proxy.golang.org,direct
  20. set GOROOT=G:\go_env
  21. set GOSUMDB=sum.golang.org
  22. set GOTMPDIR=
  23. set GOTOOLCHAIN=auto
  24. set GOTOOLDIR=G:\go_env\pkg\tool\windows_amd64
  25. set GOVCS=
  26. set GOVERSION=go1.21.3
  27. set GCCGO=gccgo
  28. set GOAMD64=v1
  29. set AR=ar
  30. set CC=gcc
  31. set CXX=g++
  32. set CGO_ENABLED=0
  33. set GOMOD=D:\goworkspace\src\go_code\project_01\main\go.mod
  34. set GOWORK=
  35. set CGO_CFLAGS=-O2 -g
  36. set CGO_CPPFLAGS=
  37. set CGO_CXXFLAGS=-O2 -g
  38. set CGO_FFLAGS=-O2 -g
  39. set CGO_LDFLAGS=-O2 -g
  40. set PKG_CONFIG=pkg-config
  41. set GOGCCFLAGS=-m64 -fno-caret-diagnostics -Qunused-arguments -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=C:\Users\wxq\AppData\Local\Temp\go-build2653196118=/tmp/go-build -gno-record-gcc-switches

 

根据配置信息,问题出在Go Modules的开启或关闭上。

  1. 当你运行 go env -w GO111MODULE= 时,它将清除 GO111MODULE 环境变量的设置,将其重置为空字符串。这将导致Go工具认为你的项目不使用Go Modules,因此它会尝试在GOPATH中查找包,但无法找到你的项目中的非标准库包。

  2. 当你运行 go env -w GO111MODULE=off 时,它将显式地将 GO111MODULE 设置为 "off",这意味着你禁用了Go Modules,并且Go工具会尝试在GOPATH中查找包。

 修改 GO111MODULE 

go env -w GO111MODULE=off

 这个时候一个包下的文件引入其他包名路径找不到的问题就解决了!

  1. D:\goworkspace\src\go_code\project_01\main>go run main.go
  2. 测试
  3. cal 函数执行了!
  4. 函数GetConnect执行了!

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号