我正在尝试像这样安装doozer
$ goinstall github.com/ha/doozer
Run Code Online (Sandbox Code Playgroud)
我收到这些错误.
goinstall: os: go/build: package could not be found locally
goinstall: fmt: go/build: package could not be found locally
goinstall: io: go/build: package could not be found locally
goinstall: reflect: go/build: package could not be found locally
goinstall: math: go/build: package could not be found locally
goinstall: rand: go/build: package could not be found locally
goinstall: url: go/build: package could not be found locally
goinstall: net: go/build: package could not be found locally
goinstall: sync: go/build: package could not be found locally
goinstall: runtime: go/build: package could not be found locally
goinstall: strings: go/build: package could not be found locally
goinstall: sort: go/build: package could not be found locally
goinstall: strconv: go/build: package could not be found locally
goinstall: bytes: go/build: package could not be found locally
goinstall: log: go/build: package could not be found locally
goinstall: encoding/binary: go/build: package could not be found locally
Run Code Online (Sandbox Code Playgroud)
pje*_*pje 284
GOPATH在cmd/go文档中讨论:
在
GOPATH环境变量列表地方寻找Go代码.在Unix上,该值是以冒号分隔的字符串.在Windows上,该值是以分号分隔的字符串.在计划9中,值是一个列表.
GOPATH必须设置为在标准Go树之外获取,构建和安装包.
GOROOT在安装说明中讨论:
Go二进制发行版假设它们将安装在
/usr/local/go(或c:\Go在Windows下),但可以将Go工具安装到其他位置.在这种情况下,您必须将GOROOT环境变量设置 为指向安装它的目录.例如,如果您安装了Go到您的主目录,则应将以下命令添加到
$HOME/.profile:Run Code Online (Sandbox Code Playgroud)export GOROOT=$HOME/go export PATH=$PATH:$GOROOT/bin注意:
GOROOT必须仅在安装到自定义位置时设置.
(Chris Bunch的答案的更新版本.)
Evg*_*M86 92
这是一个简单的设置:
directory for go related things: ~/programming/go
directory for go compiler/tools: ~/programming/go/go-1.4
directory for go software : ~/programming/go/packages
Run Code Online (Sandbox Code Playgroud)
GOROOT,GOPATH,PATH设置如下:
export GOROOT=/home/user/programming/go/go-1.4
export GOPATH=/home/user/programming/go/packages
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
Run Code Online (Sandbox Code Playgroud)
简而言之:
GOROOT适用于来自安装的编译器/工具.
GOPATH适用于您自己的项目/第三方库(使用"go get"下载).
РАВ*_*АВИ 44
第一次运行go env.
如果你看到没有安装,你可以通过自制软件或通过包和/或其他方式安装它.
如果您看到输出,则安装go.
它显示了所有已设置但未设置的环境.
如果你看到空的homebrew:
Go(在我的电脑:GOROOT)which go如果你看到空的/usr/local/go/bin/go:
export GOROOT=/usr/local/goGOPATHChr*_*nch 39
GOPATH在这里讨论:
该
GOPATH环境变量
GOPATH可以设置为以冒号分隔的路径列表,其中可以找到Go代码,包对象和可执行文件.设置a
GOPATH使用goinstall在Go树之外构建和安装自己的代码和外部库(并避免编写Makefile).
并GOROOT讨论在这里:
$GOROOT经常是Go树的根$HOME/go.默认all.bash为运行目录的父级.如果您选择不设置$GOROOT,则在使用传统的makefile开发Go程序时,必须运行gomake而不是make或gmake.
Max*_*Max 18
我阅读了go help gopath文档并且仍然令人难以置信地困惑,但是从另一个go doc页面找到了这个小块:
GOPATH环境变量指定工作区的位置.它可能是开发Go代码时需要设置的唯一环境变量.
http://golang.org/doc/code.html#GOPATH
bcm*_*lls 15
您通常不应GOROOT显式设置。该命令根据其自己的目录位置自动go识别适当的目录。GOROOT
GOPATH默认为$HOME/go. 如果你想把它放在其他地方,你只需要明确地设置它。
GOPATH包含:
go install,位于$GOPATH/bin.\xc2\xb9\nGOBIN。$GOPATH/pkg/mod。\nGOMODCACHE。如果同时设置GOBIN和GOMODCACHE,并且不设置GO111MODULE=off,那么GOPATH它本身应该基本上没有效果。
另外,在遗留GOPATH模式下(GO111MODULE=off也设置时),GOPATH包含:
$GOPATH/src.go install,位于$GOPATH/pkg。\ngo命令具有内置工件的缓存,从 Go 1.12 开始,即使在GOPATH模式下也需要它。GOPATH. 它的位置可以通过环境变量来设置GOCACHE。\xc2\xb9 二进制文件也可以在 Go 1.17 及更早版本上安装go get,但从go installGo 1.16 开始首选;请参阅https://golang.org/doc/go1.16。
arg*_*eng 11
该GOPATH应该不指向转到安装,而是你的工作空间(见https://golang.org/doc/code.html#GOPATH).每当你使用go get或go install安装一些软件包时,它都将落在GOPATH中.这就是为什么它会警告你,你绝对不希望将来自互联网的随机软件包转储到你的官方安装中.
具体来说GOROOT,Go 1.9 会自动将其设置为安装路径。
即使你安装了多个 Go,调用 1.9.x 的一个也会设置GOROOT为/path/to/go/1.9(之前,如果没有设置,它会假设一个默认路径,如/usr/local/go或c:\Go)。
请参阅CL Go 评论 53370:
现在将
go tool使用调用它的路径来尝试定位 Go 安装树的根。
这意味着如果整个 Go 安装移动到新位置,它们go tool应该继续照常工作。这可以通过
GOROOT环境设置来覆盖,这只能在异常情况下进行。
请注意,这不会影响该runtime.GOROOT()函数的结果,该函数将继续报告原始安装位置;这可能会在以后的版本中得到修复。
在现代 Go 中,您不需要设置GOPATHor GOROOT。事实上,除非您正在做一些非常专业的事情,否则最好在您的系统上取消设置它们。
使用 Go 模块。安装 Go 后,选择您想要工作的目录。然后:
$ mkdir example
$ cd example
$ go mod init example.com
Run Code Online (Sandbox Code Playgroud)
请注意,模块名称example.com是任意的;如果您将工作保存在 GitHub 上,这可能类似于github.com/your-username/project-name.
最后一条命令将创建一个go.mod文件;现在你可以通过以下方式获取依赖项go get:
$ go get rsc.io/quote
Run Code Online (Sandbox Code Playgroud)
现在您的代码使用此依赖项:
$ touch main.go
Run Code Online (Sandbox Code Playgroud)
将其放入main.go:
package main
import (
"fmt"
"rsc.io/quote"
)
func main() {
fmt.Println(quote.Go())
}
Run Code Online (Sandbox Code Playgroud)
并运行:
$ go run .
Run Code Online (Sandbox Code Playgroud)
关于原始问题,您现在可以doozer通过以下方式获取依赖项:
$ go get github.com/ha/doozer
Run Code Online (Sandbox Code Playgroud)
doozer现在您可以在代码中使用该模块。等等。您还可以检查go.mod目录中的文件以查看列出的依赖项及其版本。每个模块都是独立的,具有自己的依赖版本。您可以拥有两个并排的模块,每个模块都有自己的go.mod文件指向某些依赖项的不同版本 - 由于模块之间的隔离,这一切都会正常工作。
有关更多信息,请从此处的官方教程开始。在几个章节中,它将引导您完成上面所示的步骤,以及编写您自己的可重用模块和包,以及从其他模块导入它们。其他交互式教程可在https://play-with-go.dev/获取
小智 8
GOPATH并且GOROOT配置已被弃用。
您可以改用 GO 模块。
例如:
mkdir go_app
cd go_app
go mod init go_app
Run Code Online (Sandbox Code Playgroud)
正如刚才提到的:
GOPATH环境变量指定工作区的位置.
对于Windows,这适用于我(在Ms-dos窗口中):
set GOPATH=D:\my_folder_for_go_code\
Run Code Online (Sandbox Code Playgroud)
这将创建一个GOPATH变量,Ms-dos在使用时可以识别如下:
cd %GOPATH%
Run Code Online (Sandbox Code Playgroud)
有很多答案,但没有实质内容,就像机器人在系统上剪切和粘贴内容一样。无需设置GOROOT为环境变量。但是,需要设置环境GOPATH变量,如果不设置,则默认为${HOME}/go/文件夹。
你必须注意的是PATH环境变量,因为这个变量是可以改变你的go version. 不是GOROOT!忘记GOROOT。
现在,如果您切换或更改为新的go version,您下载的软件包将使用默认$HOME/go文件夹,并且它将与您以前的文件夹混合在一起go version。不是很好。
因此,您需要在此处GOPATH进行定义,以便隔离下载的新go version.
总而言之,忘记了GOROOT。多思考一下GOPATH。