$ goinstall github.com/ha/doozer
我得到这些错误。
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
#1 楼
GOPATH
文档中讨论了cmd/go
:GOPATH
环境变量列出了查找Go代码的位置。在Unix上,该值是用冒号分隔的字符串。在Windows上,该值为
,以分号分隔的字符串。在Plan 9上,该值是一个列表。
必须设置
GOPATH
以获取,构建和安装标准Go树之外的软件包。在安装说明中讨论了
GOROOT
:Go二进制发行版假定它们将安装在
/usr/local/go
(或Windows下的c:\Go
)中,但可以安装将Go工具移到其他位置。在这种情况下,必须将
GOROOT
环境变量设置为指向安装它的目录。例如,如果已安装,请转到主目录。将以下命令添加到
$HOME/.profile
中:export GOROOT=$HOME/go
export PATH=$PATH:$GOROOT/bin
注意:仅当安装到自定义位置时,才必须设置
GOROOT
。(克里斯·邦奇的答案的更新版本。)
评论
有关GOPATH的更多详细信息,请参见如何编写Go代码。需要掌握那里的信息才能理解go命令,这对于使用Go至关重要。例如,现在应该在go中使用goinstall中的goinstall。
–索尼娅
2012年6月1日15:45
另请注意go的实际安装路径。例如,在默认的自制程序设置中,自制程序将安装在/ usr / local / Cellar / go /中。在这种情况下,导出路径应设置为export GOROOT = / usr / local / Cellar / go / {version}并导出PATH = $ PATH:$ GOROOT / bin。
– ekillaby
13年3月4日在16:32
我必须导出GOROOT = / usr / local / Cellar / go / 1.2 / libexec /才能使我的Brew工作。
–史蒂文·索罗卡(Steven Soroka)
2014年2月7日在21:32
我不建议进行此修改,因为该应用程序抱怨我的编辑“似乎包含”未格式化的代码(不是这样;非常感谢),但是:
–通配符
19年5月15日在15:41
从Go 1.10开始,如果未设置GOROOT,则go工具将尝试通过自己的位置进行查找。我也无法粘贴链接,因为粘贴在Stack Exchange的iOS应用中不起作用。现在非常沮丧。
–通配符
19年5月15日在15:43
#2 楼
这是我的简单设置:directory for go related things: ~/programming/go
directory for go compiler/tools: ~/programming/go/go-1.4
directory for go software : ~/programming/go/packages
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
因此,简而言之:
GOROOT用于来自go安装的编译器/工具。
GOPATH用于您自己的go项目/第三方库(通过“ go get”下载)。
评论
我认为这个答案更容易理解,因为有针对文件夹结构的映射。
– h-rai
18年5月7日在11:35
GOPATH是否将整个项目树(例如git)包含在非执行文件中-例如图像,脚本,构建文件等?
– Serge Merzliakov
19年5月17日在1:44
您能提供安装墙吗?我假设您使用wget下载tar文件并稍后将其解压缩?
–卢卢
20年7月17日在9:48
#3 楼
首先运行go env
。如果未安装go,则可以通过
homebrew
或通过软件包和/或其他方式安装。如果看到输出,则说明您已安装
Go
。它显示所有已设置和未设置的环境。
如果看到
GOROOT
为空:运行
which go
(在我的计算机上: /usr/local/go/bin/go
),然后像这样导出
export GOROOT=/usr/local/go
如果您看到
GOPATH
的内容为空:在我的情况下进行项目:~/GO_PROJECTS
然后
export GOPATH=~/GO_PROJECTS
评论
哪个对我有用。它是从以前使用Chocolatey安装的安装位置中转到另一个go安装位置。删除该文件夹并将其从PATH变量中删除。现在可以了。谢谢!
–斯加格
16年5月25日在17:57
在Windows 7中,哪个go命令对我不起作用。如何找到应该在哪里运行此命令的命令?
–firstpostcommenter
18年4月4日在12:55
相应的Windows命令在哪里,它将向您显示已执行文件的路径
– Falco
19年4月5日在11:48
导出GOPATH =〜/ GO_PROJECTS完成工作
– Thamaraiselvam
19-10-2 19:38
#4 楼
在此处讨论GOPATH
:GOPATH
环境变量GOPATH
可以设置为用冒号分隔的路径列表,在其中Go 代码包对象和可执行文件。 > Makefiles)。在这里讨论
GOPATH
:GOROOT
Go树的根,通常是$GOROOT
。这默认为运行$HOME/go
的目录的父目录。如果选择不设置all.bash
,则在使用常规makefile开发Go程序时必须运行gomake而不是make或gmake。评论
因此,如果我已经安装到〜/ projects / go,那么变量的值应该是什么才能找到os,fmt等?
– jshen
2011年11月1日21:48
那么在sudo apt-get install golang时Go会安装在哪里?
–weberc2
2013年1月11日,1:30
@ weberc2如果运行go env,您应该会看到该信息,对我来说是/ usr / lib / go /
–安德烈
13年2月4日在18:38
#5 楼
我阅读了go help gopath
文档,仍然感到非常困惑,但是从另一个go doc页面发现了这个小块:开发Go代码时,很可能需要设置唯一的环境变量。http://golang.org/doc/code.html#GOPATH
#6 楼
GOPATH不应指向Go安装,而应指向您的工作空间(请参阅https://golang.org/doc/code.html#GOPATH)。每当您使用go get或go install安装某些软件包时,它将落入GOPATH中。这就是为什么会警告您的原因,您绝对不希望将来自互联网的随机软件包转储到您的正式安装中。#7 楼
从go 1.8(2017年第二季度)开始,默认情况下会将GOPATH设置为$ HOME / go请参阅问题17262和Rob Pike的评论:
没有唯一的最佳答案,但这又简短又甜蜜,如果
$HOME/go
已经存在,选择该名称将是一个问题,这只会让已经安装了该软件的专家感到高兴。会了解$HOME/go
。评论
如此简单的话题如何变得如此复杂!感谢您的最佳答案。
– dodgy_coder
18年4月19日在13:51
@dodgy_coder其实...看一下我的其他答案的前两行:stackoverflow.com/a/37905102/6309;)最终可能会变得更简单:根本没有GOPATH!有关更多详细信息,请参见stackoverflow.com/a/48914523/6309。
–VonC
18年4月19日在13:56
是的,我同意,如果您使用默认值,则不是真的需要GOPATH,对吗?我仍然需要设置它,因为Google App Engine(Go标准)开发环境需要它。他们实际上告诉您设置GOPATH,但没有告诉您将其设置为什么值。
– dodgy_coder
18年4月20日在12:59
@dodgy_coder是的,默认情况下,Go将以固定的预定值查找项目PATH。
–VonC
18年4月20日在13:01
#8 楼
如上所述:GOPATH环境变量指定您的
工作区的位置。
对于Windows,这对我有用(在Ms-dos窗口中):
set GOPATH=D:\my_folder_for_go_code\
这将创建一个MPATH可以识别的GOPATH变量,如下所示: br />
#9 楼
特别是对于GOROOT
,Go 1.9会自动将其设置为安装路径。即使安装了多个Go,调用1.9.x也会将
GOROOT
设置为/path/to/go/1.9
(如果未设置,则假定为默认路径类似于/usr/local/go
或c:\Go
)。请参阅CL Go Review 53370:
现在,
go tool
将使用调用它的路径来尝试查找根这意味着如果整个Go安装都移到了新位置,则
go tool
应该继续照常工作。 请注意,这不会影响
GOROOT
函数的结果,该函数将继续报告原始安装位置;这可能会在以后的版本中修复。#10 楼
这是一个解决方案(单个用户):GOROOT=$HOME/.local # your go executable is in $GOROOT/bin
GOPATH=$HOME/.gopath
PATH=$GOROOT/bin:$GOPATH/bin:$PATH
go
抱怨如果将.gopath
更改为.go
。 rust/cargo
伙计们做了,只是将所有东西都放在一个地方。#11 楼
从2020年和Go 1.13版开始,在Windows中,更新GOPATH的最佳方法是在命令提示符下键入:setx GOPATH C:\mynewgopath
#12 楼
在osx中,我安装了brew,这是适用于我的设置GOPATH="$HOME/my_go_work_space" //make sure you have this folder created
GOROOT="/usr/local/Cellar/go/1.10/libexec"
#13 楼
我必须在Mac OS X上将export GOROOT=/usr/local/Cellar/go/1.10.1/libexec
附加到我的〜/ .bash_profile
#14 楼
在某些情况下,当我们使用go时,它会编译所有go文件。新的main.go文件。然后,当我们构建应用程序时,所有go文件都会被编译。因此发生的错误可能是由于其他一些go文件中的编译错误所致。#15 楼
一旦安装了Go lang,GOROOT就是安装的根目录。当我在Windows C:\目录中分解Go Lang二进制文件时,我的GOROOT应该是C:\ go。
如果与Windows安装程序一起安装的,对于64位程序包,它可能是C:\ Program Files \ go(或C:\ Program Files(x86)\ go)。
GOROOT = C:\go
而我的GOPATH是Go lang源代码或工作区的位置。
如果我的Go lang源代码位于C:\ Users \\ GO_Workspace,则您的GOPATH将如下所示:
GOPATH = C:\Users\<xyz>\GO_Workspace
#16 楼
您无需显式设置GOROOT
(现代版本的Go可以根据您运行的go二进制文件的位置自行弄清它)。 :go: modules disabled inside GOPATH/src by GO111MODULE=auto; see 'go help modules'
删除GOROOT,更新我的GOPATH和
vgo
解决了此问题。在其中可以找到Go代码,包对象和可执行文件。设置GOPATH以使用goinstall在Go树之外构建和安装自己的代码和外部库(并避免编写Makefile)。
#17 楼
如果使用发行版,则应指向包含文件的位置,例如:$ rpm -ql golang | grep include
/usr/lib/golang/include
(这是用于Fedora 20的)
#18 楼
值应为(MACOS):GOROOT="/usr/local/go" --> all binaries file core go
GOPATH="/Applications/proyectos/go" --> the route to workspace (custom workspace)
评论
@Motin上面的链接不再有效该文件已成为该项目的过时文件。与OSX相关的相关问题位于:github.com/go-lang-plugin-org/go-lang-idea-plugin/issues/841
注意:默认情况下,将在Go 1.8(2017)中为您设置GOPATH。请参阅下面的答案
使用Go 1.9(2017年第三季度),您不再需要担心GOROOT。请参阅下面的答案。
@BenyaminJafari,因为goinstall确实是Go1之前的古老版本,自2012年以来就不存在。