go get“无法识别的导入路径”


91

我正在尝试安装web.go,但正在运行go get github.com/hoisie/webreturn

package bufio: unrecognized import path "bufio"
package bytes: unrecognized import path "bytes"
package crypto/rand: unrecognized import path "crypto/rand"
package crypto/sha1: unrecognized import path "crypto/sha1"
package crypto/tls: unrecognized import path "crypto/tls"
package encoding/base64: unrecognized import path "encoding/base64"
package encoding/binary: unrecognized import path "encoding/binary"
package encoding/json: unrecognized import path "encoding/json"
package errors: unrecognized import path "errors"
package fmt: unrecognized import path "fmt"

在使用各种软件包之前,这种情况会持续一段时间,然后再返回其他任何内容。go env给我:

GOARCH="amd64"
GOBIN="/usr/local/go/bin"
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH=""
GORACE=""
GOROOT="/home/me/go"
GOTOOLDIR="/home/me/go/pkg/tool/linux_amd64"
TERM="dumb"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread"
CXX="g++"
CGO_ENABLED="1"

如何安装web.go?在github页面的自述文件中使用了go get(而不是go install)。我的Go版本是go version go1.2 linux/amd64


3
已导出GOROOT但没有GOPATH?GOROOT与GOBIN有何不同?您是如何安装Go的?您是如何设置环境的?
Volker 2013年

我按照golang.org/doc/install页面安装了go 。我不确定要为GOPATH放置什么。
2013年3

Answers:


99

这些问题与无效有关GOROOT

我认为您已安装Go in /usr/local/go
因此,将您的GOROOT路径更改为的值/usr/local/go/bin

似乎您的工作空间(GOPATH)位于/home/me/go

这可能会解决您的问题。
将此添加到bash配置文件的底部,位于此处=>$HOME/.profile

export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin

确保删除的旧引用GOROOT

然后尝试再次安装web.go。

如果这不起作用,请让Ubuntu为您安装Go。

sudo apt-get install golang

影片教学课程:http//www.youtube.com/watch?v = 2PATwIfO5ag


15
您几乎应该永远不要设置GOROOT。您的PATH声明未命中/ usr / local / go / bin。另外,应注意,ubuntu软件包比正式发行版(1.2)要落后一些。
JimB 2013年

2
当我遵循官方网站上的安装说明(从tar文件安装到/ usr / local)时,收到上述错误,直到如上所述更改GOROOT为止。
Drew

1
刚在fedora 20上安装了新鲜的golang 1.3,并go get给出了相同的错误。GOROOT设置为/usr,将其自身安装到/ usr,而不是/ usr / local。设置GOPATH$HOME/go。你知道还有什么要检查吗?
Dfr

15
对自己说:不安GOROOT似乎解决了问题。
Dfr 2014年

4
+1(表示未设置GOROOT)。我取消了它的设置,请确保未设置它,echo $GOROOT然后检查GO仍在它所在的环境go env中保存它,并且它/usr/local/go已安装在我要安装的位置(因此在任何情况下都无需设置它)
StartupGuy

36

brew在OSX 10.11上安装了Go with ,发现必须设置GOROOT为:

/usr/local/Cellar/go/1.5.1/libexec

(当然,请使用您拥有的go版本替换此路径中的版本)

Brew使用符号链接,这些符号链接欺骗了gotool。因此,请遵循链接首页。


啊,终于,我发现了一些可行的方法。谢谢埃里克!
Mir Adnan

23

从ubuntu 14.04中的旧go版本(从旧PPA安装)迁移到较新的(1.2.1)默认软件包后,我遇到了完全相同的问题。

第一步是清除现有的go:

sudo apt-get purge golang*

输出以下警告:

dpkg: warning: while removing golang-go, directory '/usr/lib/go/src' not empty so not removed
dpkg: warning: while removing golang-go.tools, directory '/usr/lib/go' not empty so not removed

看起来删除go会留下一些文件,这反过来可能会使较新的安装迷惑。更准确地说,安装本身可以很好地完成,但是随后执行任何go命令(例如“ go get something”)都会出现“无法识别的导入路径”错误。

我要做的就是先删除这些目录,重新安装golang,然后所有的工作都像个魅力(假设您还设置了GOPATH)

# careful!
sudo rm -rf /usr/lib/go /usr/lib/go/src
sudo apt-get install golang-go golang-go.tools

我还必须删除/usr/local/go/
Natim 2015年

还必须删除/ usr / bin / go。
eatonphil 2015年

6

因为GFW禁止您访问golang.org!当我使用代理服务器时,它可以很好地工作。

您可以使用命令查看信息 go get -v -u golang.org/x/oauth2


1
这正是我在中国时遇到的问题。设置$ http_proxy之后,我可以安装该软件包而不会出现错误。

1
不仅被阻止,而且DNS被污染。首先http://ping.eu/nslookup/,找到该域的正确IP,将其设置为hosts文件,然后使用代理进行下载。export http_proxy=127.0.0.1:1080 https_proxy=127.0.0.1:1080 有时您只想对政府说F字
王先生,来自隔壁


2

我在MacOS 10.10上遇到了同样的问题。而且我发现问题是由OhMyZsh shell引起的。然后我转回bash,一切正常。

这是我的环境

bash-3.2$ go env
GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/bis/go"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fno-common"
CXX="clang++"
CGO_ENABLED="1

go env从什么时候不起作用还是什么时候起?它可能不是“ [other shell]引起的”,而是可能无法GOPATH在该其他shell中正确设置。csh和zsh系列外壳程序使用相同的启动文件(即no ~/.profile)。特别是zsh使用$ZDOTDIR/.zshenv$ZDOTDIR/.zprofile$ZDOTDIR默认为$HOME)。
Dave C


0

将go1.2升级到go1.4后,我遇到了同样的问题。

我在GOPATH中将src重命名为_src,然后执行了 go get -v

它起作用了,然后我删除了_src。

希望能帮助到你。


0

我在安装其他软件包时遇到了此问题,这可能是由于PATH上的GOROOT和GOPATH配置引起的。我倾向于不设置GOROOT,因为我的OS X安装为我处理了它。

  1. 确保.profile中(或存储配置文件配置的任何位置)以下内容:.bash_profile,.zshrc,.bashrc等):

    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin
  2. 另外,unset GOROOT如果该路径也不正确,您也可能希望这样做。

  3. 此外,请确保在执行GOPATH分配之前,像下面所做的一样,清理PATH,即:

    export PATH=$HOME/bin:/usr/local/bin:$PATH
    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin
  4. 然后,source <.profile>激活

  5. 重试 go get
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.