【问题标题】:Go Get Not Downloading to SRC Folder去获取不下载到 SRC 文件夹
【发布时间】:2021-02-19 20:54:33
【问题描述】:

预期:我使用 go get 安装包,它在 src 文件夹中创建了所有必要的文件夹,但它们只出现在 pkg/mod 文件夹中,我无法使用它们。

现实:它说它正在下载,完成,然后什么都没有。

Windows 环境变量中的所有设置都正确,这只是.. 不起作用。

使用的命令:go get github.com/fatih/color

去环境:

set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\admin\AppData\Local\go-build
set GOENV=C:\Users\admin\AppData\Roaming\go\env
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=C:\Users\admin\Desktop\gostuff\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=C:\Users\admin\Desktop\gostuff
set GOPRIVATE=
set GOPROXY=https://proxy.golang.org,direct
set GOROOT=c:\go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=c:\go\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.16
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=NUL
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\admin\AppData\Local\Temp\go-build639062626=/tmp/go-build -gno-record-gcc-switches  ```


【问题讨论】:

  • Go 模块不使用或下载任何东西到$GOPATH/src
  • 我看过的所有视频都证明了这一点,当然它们不是最近的;但我不明白为什么我不能使用我当时正在安装的东西。
  • 您的资源已过期。从官方文档开始,如How to Write Go CodeGetting StartedModulesGo Modules Reference等。
  • 我在我的 mac 中也看到了这个,在 Windows 中使用这个命令工作正常。

标签: go


【解决方案1】:

将 GO111MODULE 环境变量设置为“关闭”为我解决了这个问题。 我正在使用zsh。这是我在 .zshrc 文件中输入的命令,

export GO111MODULE=off

我的工作环境,

macOS 大苏尔

Go 版本:1.16

【讨论】:

  • 究竟是什么意思?
  • 这救了我的命
  • GO111MODULE=off 强制 Go 以 GOPATH 方式运行,即使在 GOPATH 之外。这会将模块 git repo 克隆到 GOPATH。
  • 这也适用于 Ubuntu 20.4。谢谢你拯救了我的一天。我想知道为什么我安装 go 时这些设置默认没有到位。
  • 这行得通,但我认为可能有更好的方法。我用它来“获取”一个包,但该包使用 go 模块,因此必须删除导出。
【解决方案2】:

Go 模块将在 $GOPATH/mod 中保存依赖项。

因此,当您将它们导入项目时,您需要担心两件事:它们被导入到 .go 文件中,并且它们存在于 go.mod 文件中。

一旦为某个版本下载,它们将可用于所有未来的项目。

如果您想了解更多关于它们以及它们的组织方式,可以阅读此处提供的 Go Modules Wiki https://github.com/golang/go/wiki/Modules

【讨论】:

【解决方案3】:

你可以试试这个命令。

export GO111MODULE=off
go get github.com/fatih/color

【讨论】:

  • 请尝试添加用户应该尝试该命令的原因,技术细节会有所帮助
  • 这很荒谬,但它适用于 go 1.17
  • Go 1.16 和 1.17 不会在 go modules 开启时将源代码下载到您的 GOPATH(go install 命令实际上不需要 GOPATH)。你可以通过go get将github.com代码下载到src目录,如果你设置它并且有GOPATH
【解决方案4】:

从 Go 1.15 开始,go get 默认会在 $GOPATH/pkg/mod/ (GOMODCACHE) 中下载源代码,以代替原来的 $GOPATH/src/。 (参考:https://go.dev/doc/go1.15#go-command

关闭像 GO111MODULE=off 这样的 Go 模块来下载源代码是个坏主意。

如果您只需要下载源代码,我强烈建议您改用git clone

$ git clone https://github.com/fatih/color

如果您需要在$GOPATH/src/ 中拥有它,只需运行:

$ git clone https://github.com/fatih/color $GOPATH/src/github.com/fatih/color

请注意,从 Go 1.14 开始,Go 项目不再局限于 $GOPATH/src/,支持 Go 模块。你现在真的不需要那个文件夹了。 $GOPATH/src/ 文件夹是在引入 Go 模块之前用于依赖管理的。

现在建议用户迁移到 Go 模块,正如 https://github.com/golang/go/wiki/Modules 所述: “从 Go 1.14 开始,模块支持被认为已准备好用于生产环境,鼓励所有用户从其他依赖管理系统迁移到模块”。

【讨论】:

    猜你喜欢
    • 2012-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-10
    • 1970-01-01
    • 2014-05-29
    • 1970-01-01
    • 2013-07-11
    相关资源
    最近更新 更多