英文:
Go looks for packages in wrong directory
问题
我已经使用Windows msi在我的机器上安装了Go,但是当我尝试运行一个简单的Hello World
程序时,像这样:
go run hello.go
我得到了以下错误:
> hello.go:3:8: 无法在任何地方找到“fmt”包:
C:\Go\src\pkg\fmt (来自$GOROOT)
在GOROOT
中确实找不到这个包,因为它安装在以下目录中:
C:\Go\src(缺少\pkg)
GOROOT
被设置为C:\Go
(自动设置),C\Go\bin
被添加到PATH
中。
我的GOPATH
被设置为我的工作空间,但似乎没有改变任何东西。
如何修复这个问题?我应该将所有包复制到C:\Go\src\pkg
中吗?
我做错了什么吗?
编辑
根据@Volker的要求,这是go env
的输出:
set GOARCH=amd64
set GOBIN=
set GOCHAR=6
set GOEXE=.exe
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=D:\aage\gocode
set GORACE=
set GOROOT=C:\Go
set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64
set CC=gcc
set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0
set CXX=g++
set CGO_ENABLED=1
英文:
I've used the Windows msi to install Go on my machine, but when I try to run a trivial Hello World
, like so:
go run hello.go
I get the following error:
> hello.go:3:8: cannot find package "fmt" in any of:
C:\Go\src\pkg\fmt (from $GOROOT)
In the GOROOT
this package can indeed not be found, since it's installed in the following directory:
C:\Go\src (missing the \pkg)
GOROOT
is set to C:\Go
(automatically), C\Go\bin
is added to the PATH
My GOPATH
is set to my workspace, but that doesn't seem to change anything.
How can this be fixed? Should I copy all packages to C:\Go\src\pkg
?
Did I do anything wrong?
EDIT
As requested by @Volker, here's the output of go env
:
set GOARCH=amd64
set GOBIN=
set GOCHAR=6
set GOEXE=.exe
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=D:\aage\gocode
set GORACE=
set GOROOT=C:\Go
set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64
set CC=gcc
set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0
set CXX=g++
set CGO_ENABLED=1
答案1
得分: 2
请检查你的 %PATH%
:我安装了多个 Go 版本,我看到:
%GOROOT%(1.3)\src\pkg
中的fmt
:C:\prgs\go\go1.3.2.windows-amd64\src\pkg\fmt\
%GOROOT%(1.4)\src
中的fmt
:C:\prgs\go\go1.4.windows-amd64\src\fmt\
源代码已经重新组织。
请参阅 "Go 1.4 src/pkg → src
"。
这意味着,如果你尝试使用 Go 1.3 进行编译,而 GOROOT
指向的是 Go 1.4 的安装目录,你可能会看到该错误。
如果这样还不行,请卸载并使用 go1.4.windows-amd64.zip
压缩包:将其解压到任意位置,将 GOROOT
指向它,添加 GOROOT/bin
,然后一切应该正常工作。
英文:
Check your %PATH%
: I have multiple go versions installed and I see:
fmt
in%GOROOT%(1.3)\src\pkg
:C:\prgs\go\go1.3.2.windows-amd64\src\pkg\fmt\
fmt
in%GOROOT%(1.4)\src
:C:\prgs\go\go1.4.windows-amd64\src\fmt\
The sources have been reorganized.
See "Go 1.4 src/pkg → src
".
That means you might see that error if you are trying to compile with a go 1.3 while GOROOT
points to a Go1.4 installation.
If that doesn't work, uninstall, and use the go1.4.windows-amd64.zip
archive: unzip it anywhere you want, point GOROOT
to it, add GOROOT/bin
and everything should work.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论