【问题标题】:unrecognized import path (import path does not begin with hostname)无法识别的导入路径(导入路径不以主机名开头)
【发布时间】:2017-11-08 18:39:59
【问题描述】:

我已经按照 the installation instructions 的自定义安装条款安装了 go,因为我已经安装到用户目录,以适应 go 的多个版本。

当我从我的 go 项目的 src 目录中go get . 时,我收到上面已经提到的错误消息类型 ―

无法识别的导入路径(导入路径不以主机名开头)

您能否解释一下,为什么要查找主机名以及在典型项目中应该如何避免这种情况?

顺便说一句,这个问题最初是我在设置following specific project and hash时遇到的,接受的答案仍然是指。

【问题讨论】:

  • 什么是无法识别的导入路径?你能提供完整的错误输出吗?
  • 你为什么要去做本地包。请阅读 got get 的文档。
  • 这意味着“yap/app”没有找到,你无法得到它,因为它不是以主机名开头的。您的本地资源需要在 GOPATH 中。 (你可能不应该设置 GOROOT)
  • 哇,那个项目太糟糕了——他们的导入路径客观上是错误的。在他们导入yap/app 的地方,他们应该导入github.com/habeanf/yap/app 等。唯一的解决方法是将GitHub 存储库手动克隆到$GOPATH/src/yap,然后尝试构建它。
  • 很高兴它为您工作 - 重新发布为答案。抱歉,您投了这么多反对票...... SO 上的 Go 社区已经基本上厌倦了源源不断的 GOPATH/GOROOT/go get 问题,这些问题归结为简单的用户错误,但这里的情况并非如此。祝你好运!

标签: go


【解决方案1】:

go get 通过假设导入路径(在源代码中的 import 语句中)标识可以下载包的 URL 来下载依赖项和包,例如github.com/habeanf/yap。只要开发人员正确使用导入,它就可以工作;不幸的是,yap 项目的开发者没有。

在他们导入yap/app 的地方,他们应该导入github.com/habeanf/yap/app 等。唯一的解决方法是将GitHub 存储库手动克隆到$GOPATH/src/yap,然后尝试构建它。您可能想在该项目上打开一个 GitHub 问题并请求他们修复导入路径,以便可以像普通 Go 项目一样构建它。

【讨论】:

  • 好的。因此,如果我有混合导入,一些引用本地“代码模块”(例如 /home/mylib1)和一些引用“上游模块”(例如 github.com/myself/mylib2),go get 将失败,因为它尝试使用其本地路径作为绝对远程 url 下载本地“代码模块”?
【解决方案2】:

我在 Windows 上设置同一个项目时遇到了同样的问题(注意:更新的项目文档是 here)。

原来 GOPATH 是通过 GO 安装为我的用户名设置的,而我根据文档中的描述更新了系统环境 GOPATH:

为您的工作区设置 $GOPATH 环境变量:export GOPATH=path/to/yapproj

为我的用户名删除 GOPATH 解决了这个问题,我设法构建了应用程序。

我发布这个是为了防止其他人像我一样在这个问题上花费太多时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-13
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    • 2016-11-30
    • 2021-10-15
    • 2015-07-02
    • 2014-10-11
    相关资源
    最近更新 更多