如何在GAE中导入本地Go软件包

How to import local packages in Golang + GAE?

I wanna something like this:

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

Listing of my_app.go:

package my_app

import (
  "http"
  "./package1"
)

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

Listing of package1.go:

package package1

import (
  "http"
  "fmt"
)

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

I this case I have an error like:

/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

Thanks for help.

You either need to link or copy the packages to your application directory. The path relative to the root of the application directory should match the import path. To use package1, you should configure your app directory to look like this:

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

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

As noted in the comments to dupoxy's answer, the way to import a local package in the given situation is to import as "my_app/package1":

import (
    "http"
    "my_app/package1"
)