2011-11-03 9 views
5

Jak importować lokalne pakiety w systemie Golang + GAE?Jak importować lokalny pakiet Go w GAE

chcę coś takiego:

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

Notowania my_app.go:

package my_app 

import (
    "http" 
    "./package1" 
) 

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

Notowania package1.go:

package package1 

import (
    "http" 
    "fmt" 
) 

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

I w tym przypadku mam błąd podobne:

/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 

Dzięki za pomoc.

Odpowiedz

1

Musisz połączyć lub skopiować pakiety do katalogu aplikacji. Ścieżka względem katalogu głównego katalogu aplikacji powinna być zgodna ze ścieżką importu. Aby korzystać package1 należy skonfigurować katalog aplikacji wyglądać tak:

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

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

+1

dla prawdziwego żywego przykład sprawdzić https://github.com/haarts/flipco.in który używa zewnętrznego Moustache lib. – harm

+2

Niestety, jesteś w błędzie. Znalazłem odpowiedź na moje pytanie. Jeśli chcę dodać pakiet do my_app/package1, powinienem napisać import "my_app/package1". Dziękuję za odpowiedź. – Rusfearuth

+0

siano Jestem w błędzie oups. Zwróć uwagę na "powinieneś" w mojej odpowiedzi jako, to jest to, co chciałbym zrobić zamiast mieszania pakietu1 import z my_app – dupoxy

6

Jak wspomniano w komentarzach do dupoxy na odpowiedź, sposób zaimportować pakiet lokalnej w dany sytuacja jest import jak "my_app/package1":

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

Pamiętaj jednak, że nie możesz wtedy skompilować/uruchomić programu jak normalnie, ponieważ względna ścieżka importu jak ta nie będzie działać poza GAE. Możesz stworzyć "hybrydową" aplikację z flagą kompilacji '' '+ build! Appengine''' na pliku' '' main.go''' (na przykład), która następnie importuje używając pełnej ścieżki pakietu. Wtedy twój plik GAE go miałby coś przeciwnego, '' + build appengine''', aby wykluczyć go z normalnego procesu budowania. To trochę denerwujące, ale działa. – Tom