2011-11-03 14 views
5

¿Cómo importar paquetes locales en Golang + GAE?Cómo importar el paquete Go local en GAE

Quiero algo como esto:

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

Listado de my_app.go:

package my_app 

import (
    "http" 
    "./package1" 
) 

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

Listado de package1.go:

package package1 

import (
    "http" 
    "fmt" 
) 

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

que este caso tengo un error como:

/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 

Gracias por su ayuda.

Respuesta

1

Debe vincular o copiar los paquetes en el directorio de la aplicación. La ruta relativa a la raíz del directorio de la aplicación debe coincidir con la ruta de importación. Para utilizar package1, debe configurar el directorio de aplicación para el siguiente aspecto:

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

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

+1

para un ejemplo real comprobar https://github.com/haarts/flipco.in que utiliza el lib bigote externa. – harm

+2

Desafortunadamente, estás equivocado. He encontrado respuesta a mi pregunta. Si quiero agregar el paquete a my_app/package1, debería escribir la importación "my_app/package1". Gracias por responder. – Rusfearuth

+0

heno Estoy equivocado oups. Tenga en cuenta el "debería" en mi respuesta como, esto es lo que haría en el lugar de mezclar la importación del paquete1 con my_app – dupoxy

6

Como se señaló en los comentarios a la dupoxy respuesta, la forma de importar un paquete local en el dado situación es importar como "my_app/package1":

import (
    "http" 
    "my_app/package1" 
) 
+2

Tenga en cuenta que no puede compilar/ejecutar su programa normalmente porque una ruta de importación relativa como esa no funcionará fuera de GAE. Puede crear una aplicación "híbrida" con un indicador de compilación '' '+ build! Appengine''' en un archivo' '' main.go''' (por ejemplo) que luego se importa utilizando la ruta completa del paquete. Entonces su archivo GAE go tendría el opuesto, '' '+ build appengine''' para excluirlo del proceso normal de compilación. Es un poco molesto pero funciona. – Tom

Cuestiones relacionadas