为了账号安全,请及时绑定邮箱和手机立即绑定

没有必需的模块提供包<imported-package>:在当前目录或任何父目录中找不到

没有必需的模块提供包<imported-package>:在当前目录或任何父目录中找不到

Go
紫衣仙女 2022-10-17 19:24:46
我已经看到可能重复的问题,但他们似乎建议使用 go 模块。但我想知道为什么GOPATH 有据可查的功能不能开箱即用:-导入路径 P 表示在 GOPATH 环境变量中列出的某些 DIR 目录 DIR/src/P 中找到的包(有关更多详细信息,请参阅:'go help gopath')。我正在尝试使用文件 main.go 中的 root.go~/src/github.com/himanshugarg/sicp/root$ lsmain.go  root.go  test.go文件 root.go 具有包声明:-~/src/github.com/himanshugarg/sicp/root$ head root.go // Find square root using Newton's method// Based on SICP's on page 30package rootimport (  "math");func Sqrt(x float64) float64{  goodEnough := func (guess float64) bool {文件 main.go 导入根目录:-~/src/github.com/himanshugarg/sicp/root$ head main.go package mainimport (  "fmt"  "os"  "strconv"  "github.com/himanshugarg/sicp/root");func main() {GOPATH 设置正确:-~/src/github.com/himanshugarg/sicp/root$ echo $GOPATH/home/hgarg但构建失败: -~/src/github.com/himanshugarg/sicp/root$ go build main.go main.go:7:3: no required module provides package github.com/himanshugarg/sicp/root: go.mod file not found in current directory or any parent directory; see 'go help modules'当然,我可以使用 go 模块,但我只是想确保 GOPATH 不再有效,或者我没有遗漏任何东西。
查看完整描述

1 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

此链接发布在现已删除的评论中 - https://go.dev/ref/mod#mod-commands - 为这种看似 (GO)PATH 的重大变化提供了解释:-

大多数 go 命令可以在 Module-aware 模式或 GOPATH 模式下运行。在模块感知模式下,go 命令使用 go.mod 文件来查找版本化依赖项,它通常从模块缓存中加载包,如果缺少模块则下载模块。在 GOPATH 模式下, go 命令忽略模块;它在供应商目录和 GOPATH 中查找依赖项。

从 Go 1.16 开始,默认启用模块感知模式,无论是否存在 go.mod 文件。在较低版本中,当当前目录或任何父目录中存在 go.mod 文件时,会启用模块感知模式。

更远:-

模块感知模式可以通过 GO111MODULE 环境变量进行控制,该变量可以设置为 on、off 或 auto。

If GO111MODULE=off, the go command ignores go.mod files and runs in GOPATH mode.

通过关闭 GO111MODULE,我可以使用 GOPATH 作为记录。


查看完整回答
反对 回复 2022-10-17
  • 1 回答
  • 0 关注
  • 123 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信