【问题标题】:cannot find local package in plugin在插件中找不到本地包
【发布时间】:2019-10-04 12:31:06
【问题描述】:

我正在用 Golang 编写一个插件,我正在尝试导入一个包,该包比插件高一级。但是,我不可能找到包裹。

包名是:com_styx_proto

插件路径:SomeCoolUser/go/src/go_poc/plugins/styxBotDetectGrpc/styxBotDetectGrpc.go

试图访问的包路径:SomeCoolUser/go/src/go_poc/plugins/styx.pb.go

此代码不起作用:

import (
    "com_styx_proto"
    "io/ioutil"
    "net/http"
    "time"
    "fmt"
)

func main() {
    fmt.Println("Hello World")
}

构建时出错:无法加载 go_poc/plugins:格式错误的模块路径“go_poc/plugins”:第一个路径元素中缺少点

【问题讨论】:

  • 致downvoter:哪里更适合这个问题?
  • 您没有提供minimal reproducible example、复制步骤,甚至您遇到的错误输出。见How to Ask
  • 已更新。我没有提供更多代码的原因是因为错误在导入中(我提供了)
  • 该示例没有丢失"Hello World!",该示例缺少您为获取错误而采取的确切步骤。您仍然列出特定文件而不是包。在示例中,go_poc/plugins/styxBotDetectGrpcgo_poc/plugins 均未导入(假设您使用的是 GOPATH)。如果不使用 GOPATH,模块设置如何?

标签: go


【解决方案1】:

要导入不属于标准库的包,请使用其文件系统路径。对于您的情况,如果您尝试在 .../go_poc/plugins 下导入包,请编写:

import (
   com_styx_proto "go_poc/plugins"
)

此外,通常使用目录的最后一个组件作为包名,因此请考虑更改目录结构以匹配包名。

【讨论】:

  • 这也是我尝试过的一种可能性。不幸的是,我得到:无法加载 go_poc/plugins:找不到提供包 go_poc/plugins 的模块
  • 你是如何构建它的?从哪个目录,使用什么命令?
  • go build -buildmode=plugin -o styxBotDetectGrpc.so styxBotDetectGrpc.go
  • 这对我来说很好用。你有一个健全的环境吗?你的 GOPATH 设置为 .../go 吗? styx.pb.go 有包名 com_styx_proto 吗?
  • GOPATH="/Users/CoolUser/go" GOROOT="/usr/local/go"
猜你喜欢
  • 1970-01-01
  • 2021-08-22
  • 2010-11-29
  • 2014-08-10
  • 2020-01-24
  • 2016-01-18
  • 2020-01-30
  • 2016-11-17
  • 1970-01-01
相关资源
最近更新 更多