2015-06-17 12 views
17

Ho la seguente struttura di file:Go: import locale nella confezione non locali

. 
├── bin 
│   └── hello 
├── pkg 
└── src 
    └── jacob.uk.com 
     ├── greeting 
     │   └── greeting.go 
     └── helloworld.go 

5 directories, 3 files 

Con il seguente GOPATH

/Users/clarkj84/Desktop/LearningGo 

Al esecuzione /usr/local/go/bin/go install jacob.uk.com all'interno della cartella src, ottengo l'errore local import "./greeting" in non-local package

helloworld.go:

package main; 
import "./greeting" 

func main() { 

} 

risposta

18

Non è possibile utilizzare l'importazione locale quando si specifica un pacchetto non locale su go install. Se si desidera che l'importazione locale funzioni, prima modificare la directory di lavoro su src/jacob.uk.com quindi eseguire go install (senza specificare il pacchetto).

Ovviamente avendo il helloworld.go che hai fornito si otterrà un errore di compilazione: imported and not used. Ma una volta che si utilizza qualcosa dal pacchetto greeting importato, dovrebbe essere compilato.

Ma non si dovrebbero usare le importazioni locali. Invece scrivere:

import "jacob.uk.com/greeting" 

E così facendo si sarà in grado di compilare/eseguire/installarlo da nessuna parte.

-1

è possibile aggirare questo utilizzando la funzione vendor
cambiamento import "./greeting"-import "greeting"
creare la cartella vendor mkdir vendor e creare un link simbolico ln -s ../greeting vendor/greeting

Problemi correlati