【问题标题】:How to import local Go package in GAE如何在 GAE 中导入本地 Go 包
【发布时间】:2017-10-06 02:53:03
【问题描述】:

如何在 Golang + GAE 中导入本地包?

我想要这样的东西:

app/
-app.yaml
-/my_app
--my_app.go
--/package1
---package1.go

my_app.go 列表:

package my_app

import (
  "http"
  "./package1"
)

func init() {
  http.HandleFunc("/", package1.index)
}

package1.go 列表:

package package1

import (
  "http"
  "fmt"
)

func index (w http.ResponseWriter, r * http.Request) {
  fmt.Fprint(w, "I'm index page =) ")
}

在这种情况下,我有如下错误:

/path/to/project/my_app/my_app.go:5: can't find import: ./package1
2011/11/03 10:50:51 go-app-builder: Failed building app: failed running 6g: exit status 1

感谢您的帮助。

【问题讨论】:

    标签: google-app-engine go


    【解决方案1】:

    正如 cmets 对 dupoxy 的回答中所述,在给定情况下导入本地包的方法是导入为 "my_app/package1"

    import (
        "http"
        "my_app/package1"
    )
    

    【讨论】:

    • 但是请注意,您不能像往常一样编译/运行您的程序,因为这样的相对导入路径在 GAE 之外不起作用。您可以在main.go 文件(例如)上创建一个带有+build !appengine 构建标志的“混合”应用程序,然后使用完整的包路径导入。然后您的 GAE go 文件将具有相反的 +build appengine 以将其从正常的 go 构建过程中排除。这有点烦人但有效。
    【解决方案2】:

    您需要将包链接或复制到您的应用程序目录。相对于应用程序目录根目录的路径应该与导入路径匹配。要使用package1,您应该配置你的应用目录看起来像这样:

    app.yaml
    yourapp/yourapp.go
    package1/package1.go
    

    来自https://groups.google.com/d/msg/golang-nuts/coEvrWIJGTs/75GzcefKVcIJ

    【讨论】:

    • 查看使用外部 Mustache 库的github.com/haarts/flipco.in 的真实示例。
    • 很遗憾,你错了。我找到了我的问题的答案。如果我想将包添加到 my_app/package1,我应该写 import "my_app/package1"。感谢您的回答。
    • 干草我错了。请注意我的回复中的“你应该”,这是我将 package1 导入与 my_app 混合的地方
    猜你喜欢
    • 1970-01-01
    • 2016-05-30
    • 2015-09-02
    • 1970-01-01
    • 2019-10-06
    • 2021-06-17
    • 1970-01-01
    • 2020-09-12
    • 2022-01-08
    相关资源
    最近更新 更多