Google app engine GO项目的Appengine文件夹结构

Google app engine GO项目的Appengine文件夹结构,google-app-engine,go,Google App Engine,Go,使用Appengine的开发软件,我的应用程序运行良好。当我尝试部署时,会出现以下错误: main.go:11:找不到导入:“github.com/afoo/court/models” 我的文件夹结构如下所示,其中afoo是“标准”src/github.com设置的子目录,在GOPATH中引用: app.yaml文件非常简单: application: application-id version: 1 runtime: go api_version: go1 handlers: - u

使用Appengine的开发软件,我的应用程序运行良好。当我尝试部署时,会出现以下错误:

main.go:11:找不到导入:“github.com/afoo/court/models”

我的文件夹结构如下所示,其中afoo是“标准”src/github.com设置的子目录,在GOPATH中引用:

app.yaml文件非常简单:

application: application-id
version: 1
runtime: go
api_version: go1

handlers:
  - url: /styles
    static_dir: styles

  - url: /scripts
    static_dir: scripts

  - url: /.*
    script: _go_app
main.go文件具有我定义的URL处理函数,例如:

func init() {

    // Register a handler for /.
    http.HandleFunc("/", MapNetworkHandler)
}
main.go中的模块导入是完全限定的,如下所示:

    "github.com/afoo/cohort/models"
谷歌集团从2014年开始进行了长期讨论,试图解释正确的文件夹设置。它位于这里:

从那次讨论中,我了解到我需要将所有模块(这里是模型、存储库和UTIL)从主文件夹中分离出来。但是,还有一些令人困惑的地方提到了其他的.yaml文件,这些文件应该放在每个模块文件夹中,没有描述它们的外观,同时还提到了以某种方式导入其他所有内容的骨架init(.go)文件

不管是好是坏,我通过榜样学习,但我找不到一个对我有帮助的好榜样。如果有人知道正确的文件夹结构和补充文件,我一定会非常感激


谢谢你的帮助

对于项目文件夹中的代码,请使用相对于
app.yaml
的路径

因此,如果你有:

- Folder: MyProject (can be inside GOPATH/github or any other place)
  - app.yaml
  - Folder: MyCode (package mycode)
    - code1.go
    - Folder: MySubCode (package mysubcode)
      - code2.go
进口应如下所示:

import (
  "mycode"
  "mycode/mysubcode"
)
请注意,对于低于app.yaml或与app.yaml处于同一级别的代码,您没有指定github或高于app.yaml的任何其他内容

更新:我将项目文件夹保留在GOPATH之外。比如:

- ~ (user folder)
  - GOPATH folder
  - My GAE projects folder
     MyProject1

通过这种方式,它可以很好地从GOPATH的“github/”导入,也可以从app.yaml的相关路径导入,比如“myproject/”

谢谢,Alexander。我更愿意这样设置应用程序,但我遇到了一个类似“app file xxx.go与从GOPATH导入的同一文件冲突”的错误。根据我在原始帖子中对Google Groups链接的评论,这个错误应该通过“将所有yaml文件及其相关源文件保留在GOPATH之外,然后导入[ing]来解决您需要的任何其他包都可以从这些文件中保存在您的GOPATH中。“这在开发环境中工作,但我似乎无法部署它。请尝试将您的项目移到GOPATH之外-这就是我的工作方式,对我来说也是如此。我会用我的设置更新答案。谢谢,亚历山大。您的解决方案在本地和上传时都有效。然而,有趣的是,我选择的IDE(VS代码)在导入模块时报告了一个错误:“在[GOROOT path][GOPATH path]中的任何一个中都找不到包‘models’”。我就不说了。PyCharm工作正常。但可能需要设置项目根目录或在某处添加源路径。