2016-03-15 17 views
14

ho impostato il mio GOPATH aPosso avere più directory GOPATH?

/Users/me/dev/go 

e ho

/Users/me/dev/go/src/client1 
/Users/me/dev/go/src/client2 
/Users/me/dev/go/src/client3 

e anche

/Users/me/dev/client1/rails_project 
/Users/me/dev/client2/php_project 
etc. 

Non mi piace come nella mia cartella principale dev sono costretto ad avere questo generale "go" dir che contiene molti diversi progetti di andare del cliente.

+0

Sì. Voci separate: o; a seconda del sistema operativo. – Volker

risposta

21

Sì, GOPATH è una lista di directory (come PATH). Eseguire go help gopath per i dettagli. Per esempio, su Linux, ho:

$ go env 
GOROOT="/home/peter/go" 
GOPATH="/home/peter/gopath:/home/peter/public/gopath" 
$ 

Ho qualcosa di simile su Windows.

Nota: Linux utilizza : come separatore di lista GOPATH; Windows utilizza ; come separatore.

Se si utilizza go get, per impostazione predefinita verrà visualizzata la prima directory nell'elenco.

Eseguire go env per verificare che tutto sia corretto.

+7

Sfortunatamente, questo causa ancora tutti i tipi di problemi in quanto gli strumenti non sembrano gestire bene più GOPATH. Ad esempio, le directory del venditore vengono raccolte solo nel primo elemento nel percorso; 'go get' funziona solo contro il primo elemento nel percorso; la maggior parte degli strumenti di gestione dei fornitori (tutti?) non prevede di avere più di un elemento nel percorso; diversi percorsi di lavoro sono considerati in diversi "alberi". E i pacchetti in più di una posizione (vendorizzati) diventano un po 'approssimativi. Sto ancora cercando di capire tutto questo, ma non ho ancora trovato una buona soluzione. – payneio

6

Sì.

Per citare Go stessa:

$ go help gopath 

Il percorso Go viene utilizzata per risolvere istruzioni import. È implementato e documentato nel pacchetto go/build.

La variabile di ambiente GOPATH elenca i posti in cui cercare il codice Go.
Su Unix, il valore è una stringa separata da due punti.
Su Windows, il valore è una stringa separata da punto e virgola.
Nel piano 9, il valore è un elenco.

GOPATH deve essere impostato per ottenere, compilare e installare pacchetti all'esterno dell'albero standard Go .

Ogni directory elencata nella GOPATH deve avere una struttura prescritto:

La directory src stive codice sorgente. Il percorso sotto src determina il percorso di importazione o il nome dell'eseguibile.

...

1

This blog post dà una bella spiegazione su come e perché si potrebbe impostare più valori in GOPATH, soprattutto quando si dice:

mio GOPATH si compone di 3 cartelle o spazi di lavoro GOPATH.

Il primo è lo spazio di lavoro di destinazione.Dal momento che è elencato per primo, ogni volta che prendo un nuovo pacchetto, finisce sempre in questo spazio di lavoro.

Cerca nelle directory elencate in GOPATH per trovare il codice sorgente, ma i nuovi pacchetti vengono sempre scaricati nella prima directory nell'elenco. Io faccio una regola per non fare mai nessuno sviluppo, quindi è sempre sicuro pulire questa cartella ogni volta che diventa troppo grande (con pacchetti Go che non uso). Dopo tutto, ha solo pacchetti Go che posso ottenere di nuovo con go get.

Il mio secondo spazio di lavoro è per tutti i pacchetti personali Go di e qualsiasi altro pacchetto che possa desiderare di "preferito" o di sviluppo su. Sposto le cose che uso regolarmente dal primo spazio di lavoro al secondo.

Il mio terzo spazio di lavoro è dedicato a i pacchetti Go privati ​​dal mio lavoro e le loro dipendenze. È comodo avere i miei pacchetti di lavoro separati da tutte le mie cose personali, in modo che non si intralcino l'un l'altro.

Problemi correlati