Golang - 在Sublime Text 2中找不到包

3

当我尝试在SublimeText2中执行我的带有包newmath的.go脚本时,出现以下错误。

"test.go:5:2: import "newmath": cannot find package"

这是我在SublimeText2中使用的构建系统。
{
"cmd": ["go","run", "${file}"],
"working_dir": "${file_path}",
"selector": "source.go, source.g"
}

但是当我在终端中执行我的脚本时,Go编译器可以找到该包并成功执行。我已经注意到GOPATH会在重启或一段时间后自动重置:/。
我的Go环境:
GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread"
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/daggi/gocode/"
GOROOT="/usr/lib/go"
GOTOOLDIR="/usr/lib/go/pkg/tool/linux_amd64"
CGO_ENABLED="1"

我认为这是SublimeText2的路径/环境问题,但我不确定。谢谢。
2个回答

2
看起来构建系统不共享GoSublime设置环境,也不共享你自己的shell环境。因此,您必须特别设置它:
请参考构建系统
{
    "cmd": ["go","run", "${file}"],
    "working_dir": "${file_path}",
    "selector": "source.go, source.g",
    "path": "/usr/lib/go/bin:$PATH",
    "env": {
        "GOPATH": "$HOME/gocode/",
        "GOROOT": "/usr/lib/go",
        "PATH": "/usr/lib/go/bin:$PATH"
    }
}

你还可以将你的 GOPATH 设置切换为使用 ${project} 而不是显式的 GOPATH,如果你的 Sublime 项目是你的 GOPATH 的话。

1
可能与GoSublime问题有关,即使您似乎没有使用GoSublime:

这在OS X和Ubuntu上已经报告过。问题似乎是shell变量没有传递给GUI(在这种情况下为ST2),这超出了GoSublime的范围。

https://github.com/DisposaBoy/GoSublime/issues/71

在你的Sublime Text 2用户设置中,你可以尝试设置你的环境变量(我说不准“env”条目是否被GoSublime或ST2特别读取,所以这个方法可能行也可能不行,如果不行的话,建议你安装并使用GoSublime,我个人认为它还是非常棒的)。
  "env": {
    "GOROOT": "/usr/lib/go",
    "GOPATH": "/home/daggi/gocode"
  }

HTH


谢谢你,使用SB2设置环境变量的解决方案已经起作用了 :) - Dustin Deus
环境设置始终传递到构建环境。 - dbn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接