go安装后,导入不会';我认不出这个包裹
您好,我是Golang的新手,安装后我想在我的项目中使用下一个软件包: 创建项目后,我执行下一个命令来安装gingonic:go安装后,导入不会';我认不出这个包裹,go,package,goland,Go,Package,Goland,您好,我是Golang的新手,安装后我想在我的项目中使用下一个软件包: 创建项目后,我执行下一个命令来安装gingonic: go get -u github.com/gin-gonic/gin 但是这个导入在我的项目中是不被认可的,我知道这与我的GOROOT有关,但是我没能解决这个问题 接下来是我的Go env变量: GO111MODULE="on" GOARCH="amd64" GOBIN="" GOCACHE="/U
go get -u github.com/gin-gonic/gin
但是这个导入在我的项目中是不被认可的,我知道这与我的GOROOT有关,但是我没能解决这个问题
接下来是我的Go env变量:
GO111MODULE="on"
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/rpantoja/Library/Caches/go-build"
GOENV="/Users/rpantoja/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/rpantoja/go/pkg/mod"
GONOPROXY="github.com/mercadolibre"
GONOSUMDB="github.com/mercadolibre"
GOOS="darwin"
GOPATH="/Users/rpantoja/go"
GOPRIVATE="github.com/mercadolibre"
GOPROXY="http://goregistry.furycloud.io/"
GOROOT="/usr/local/Cellar/go/1.15/libexec"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/Cellar/go/1.15/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/dev/null"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/gz/zfy97n595rs5w_t0dr9wr29dzzxvs4/T/go-build960054223=/tmp/go-build -gno-record-gcc-switches -fno-common"
我的项目是这样配置的:
安装软件包后:
使用模块设置新Go项目的步骤:
mkdir~/projects
,然后mkdir~/projects/myproject
cd~/projects/myproject
go mod init projectPath
其中projectPath
应该是未来git回购的URL(例如github.com/myname/myproject
)。这将在当前文件夹中创建go.mod
文件。它将包含您在go mod init
中使用的模块名称以及当前安装的go版本作为最低版本。(暂时不要担心,它不会妨碍你)如果你不打算发布你的项目,你可以给你的项目命名任何东西。但是,如果这与另一个包或模块名称冲突,您就有麻烦了go-get-github.com/gin-gonic/gin
(不要使用-u
,这很危险,因为它会更新所有子依赖项,而不是使用gin开发人员使用的依赖项)。这应该将github.com/gin-gonic/gin
作为一项要求添加到您的go.mod
文件中。如果要更新依赖项,只需再次调用获取depPath
。它会将您的go.mod
文件中的依赖项版本更新为可用的最新版本。如果您想升级/降级到特定版本,请使用获取depPath@vX.Y.Z
main.go
并在其中使用github.com/gin-gonic/gin
go mod tidy
删除所有未使用的导入,或将缺少的导入添加到go.mod
。(通常你不需要编辑go.mod
,go-mod-tidy
会为你做这件事。)它也会整理你的go.sum
文件,该文件保存所有依赖项的校验和。您可以查看该文件,但(通常)永远不必编辑它go mod tidy
将为您完成此操作Go模块集成
。默认情况下,其他设置应正确goclean-modcache
。它将清除整个本地模块缓存,因此您需要再次下载所有模块。如果模块缓存被搞砸了,这有时会有所帮助。但这不应该正常发生希望这有帮助。如果没有,请告诉我,以便添加缺少的部分。编译器报告了什么错误?在s.O.上有一段关于自制Go安装的无法解释的问题的历史。考虑切换到。你在项目的根目录中有代码> > init < /COD>模块文件吗?不要使用HOBBURW的GO。根据“如何编写Go代码”正确设置项目。在命令行上生成项目。不要发布图像。如果您使用GOPATH而不是Go模块,请在设置中禁用Go模块集成。您还可以将鼠标悬停在导入和执行
选项+输入
快捷方式上,然后选择使用go模块的另一种方式:执行内置终端中的go mod init
,然后禁用GOPATH索引(首选项| go | GOPATH |索引整个GOPATH
),并将鼠标悬停在导入上,选项+输入
,同步依赖项…我有点惊讶于不使用-u,这很危险,因为它会更新所有子依赖项,而不是使用gin开发人员使用的依赖项。我签入了go help get
,它(对我)不是很清楚。你有参考资料吗?在go get
文档上:它说-u
将更新你的软件包和所有依赖项。如果您的依赖项有一个go.mod
文件,说明它需要哪些版本的依赖项,-u
将忽略这些依赖项并更新子依赖项。这就是为什么我说这是“危险的”。理论上永远不会有问题,因为同一主要版本的所有更高版本都应该兼容,但是。。。你知道:现实并不是那么简单。澄清一下,这是关于版本约束(即:1.X.X)中具有浮动兼容性的约束。所以这是一个例外的行为。虽然我同意这需要对图书馆作者的信任,但我们可以将其恢复为“危险的”。我不是说作者的恶意意图。我说的是gin的作者创建了一个gin版本,该版本经过了dependency Y的版本X的测试,3周后dependency Y发布了一个新版本,它改变了一些稍微影响gin包的行为。如果您使用go-get-u
go将使用新版本的dependency Y,即使gin的go.mod
仍然使用旧版本,因为这是经过测试的稳定版本。当然,这是一个理论案例(例如:金酒)。我只知道我在工作中遇到了这个问题。是的,我同意你所描述的场景。这里没有恶意。这只是塞默。是的,它可以打破IRL。